Uso de find no unix em nomes estranhos de arquivos / diretórios

1

Sou um criador de scripts iniciante, escrevendo scripts em tcsh e csh (eles são ensinados em meu curso).

Estou escrevendo um script que usa o find para colocar o caminho dos diretórios. Esta é a parte do script:

set list = ('find $PATH -type d')

Funciona bem até que os nomes de arquivos ou diretórios não sejam nomeados como:

fi@@lename&& or −filename or :−,?!drectoryanem!-

Esses caracteres especiais que eu não pude manipular, alterei o script de localização para:

set list = ("'find $PATH -type d'")

mas nenhum desses trabalhos, quando eu quiser usar o caminho da lista neste próximo script:

foreach i ($list:q)
   foreach file ('find "$i" -maxdepth 1 -type f')
   ....
   end
end

não conseguiu lidar com esses nomes de arquivos especiais, por isso recebo muitos erros, como encontrar:

−."!filenda no such filename or directory
    
por Ricsie 25.10.2013 / 13:33

2 respostas

0

Eu trabalhei para fora

Tinha que ser assim:

set subor = ("'find "'"$i"'" -type f -maxdepth 1'")

agora ignora tudo nos nomes dos arquivos

e em:

foreach j ($subor:q)

citei desta forma ele ignora os caracteres em branco nos nomes dos arquivos

    
por 26.10.2013 / 11:32
2

Para gerenciar nomes de arquivos incomuns, você precisa colocar aspas (") em torno deles. No entanto, parece que você não está usando find da maneira mais eficiente. Uma das partes principais de find é que fará coisas com os arquivos selecionados. Então:

    find . -maxdepth 1 -type f -exec ls -l {} \;

executará tudo após o -exec em todos os arquivos encontrados, substituindo o {} pelo nome do arquivo.

Além disso, algo é muito estranho se você estiver usando o FreeBSD 3.2 - em maio de 1999.

    
por 25.10.2013 / 14:32