Como escapar arquivos contendo caracteres especiais como -, ou espaços

3

O conteúdo de um diretório:

$ ls -l
total 122639
-rw-r--r-- 1 125578080 Aug 20 17:47 - Diana Krall, Stan Getz & Oscar Peterson.7z
drwxr-xr-x 4      4096 Aug 20 18:02 Java

Eu gostaria de usar o comando file neste diretório, onde vários arquivos são copiados

$ file *

O resultado que eu espero:

$ file *
- Diana Krall, Stan Getz & Oscar Peterson.7z: 7-zip archive data, version 0.3
java: directory

O resultado é:

$ file *
file: illegal option --
file: illegal option -- D
file: illegal option -- a
file: illegal option -- a
file: illegal option --
file: illegal option -- K
file: illegal option -- a
file: illegal option -- l
file: illegal option -- l
file: illegal option -- ,
file: illegal option --
file: illegal option -- S
file: illegal option -- t
file: illegal option -- a
file: illegal option --
file: illegal option -- G
Usage: file [-bchikLNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
       file -C [-m magicfiles]
       file [--help]

Eu posso soletrar os nomes dos arquivos e escapar as coisas manualmente, mas eu quero usar * :

$ file -- -\ Diana\ Krall\,\ Stan\ Getz\ \&\ Oscar\ Peterson.7z
- Diana Krall, Stan Getz & Oscar Peterson.7z: 7-zip archive data, version 0.3

$ file java
java: directory

Como posso escapar ou proteger * ?

    
por Aubin 20.08.2013 / 20:10

3 respostas

5

Use apenas o seguinte

file ./*

Tudo é necessário.

    
por 20.08.2013 / 20:20
4

Você pode dizer a file (e a maioria das outras ferramentas de linha de comando Unix) para parar de procurar por opções, passando -- como argumento. Assim, o seguinte irá funcionar:

file -- *

(É claro que a sugestão de file ./* do val0x00ff também funcionará, mas fará com que o ./ apareça prefixado nos nomes dos arquivos na saída.)

    
por 20.08.2013 / 20:24
1

Simples:

file -- *

-- Significa o final das opções de comando. Como o comando de arquivo acha que - no nome do arquivo é parte da sua opção.

    
por 20.08.2013 / 20:25

Tags