Ola.
Estou iniciando em shell (bash) e to com problemas na hora de listar arquivos de um diretorio, que tem espacos no nome.
Eu sei que quando faco algo parecido com:
for arquivo in $(ls /qualquer/diretorio);
do
echo $arquivo;
done;
o que vai separar os ‘itens’ do for eh o caractere de espaco.
Como fazer entao pra que a variavel $arquivo cada hora contenha uma linha com o nome completo de um arquivo?
Tenho como mudar o qual caractere vai separar as variaveis do for?
[quote=man xargs] Because Unix filenames can contain blanks and newlines, this default
behaviour is often problematic; filenames containing blanks and/or new-
lines are incorrectly processed by xargs. In these situations it is
better to use the -0 option, which prevents such problems. When using
this option you will need to ensure that the program which produces the
input for xargs also uses a null character as a separator. If that
program is GNU find for example, the -print0 option does this for you.[/quote]
comparando as alternativas no cygwin:
$ for file in "$(ls -Q)"; do echo "um arquivo: $file"; done
um arquivo: "Cygwin.lnk"
"bash"
"docs"
"gvim - Atalho.lnk"
"instaladores"
"lastfm.sh"
"p261-knuth.pdf"
"paper.pdf"
"scheme"
"wiz.zip"
$ for file in *; do echo "um arquivo: $file"; done
um arquivo: Cygwin.lnk
um arquivo: bash
um arquivo: docs
um arquivo: gvim - Atalho.lnk
um arquivo: instaladores
um arquivo: lastfm.sh
um arquivo: p261-knuth.pdf
um arquivo: paper.pdf
um arquivo: scheme
um arquivo: wiz.zip