Estou tentando alguns arquivos com um padrão em um diretório. Eu só quero escanear o primeiro nível não recursivo.
Meu script:
for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
echo $i;
done
O comando acima verifica recursivamente. Como fazê-lo apenas para verificar o diretório de primeiro nível?
bash
shell-script
ls
Sas
fonte
fonte
printf %s\\n "$INCOMINGDIR/"*"$BUSINESSDATE"*
Respostas:
Não analise
ls
. Também não use ALL_CAPS_VARSInterativamente,
ls
tem uma-d
opção que impede a descida em subdiretórios:fonte
"${i}"
. Você nunca sabe o que pode estar emi
.my_file.doc[newline]another_persons_file.doc
e torcer para que alguns scripts tentem "rm" o que ele vê como 2 nomes de arquivos ... O link de Glenn é uma leitura obrigatória (em mywiki.wooledge.org, todos devem ler o faq inteiro, e também a página das armadilhas)ls -d .*
Não há razão para que este comando seja recursivo. Mas se
$INCOMINGDIR/*$BUSSINESSDATE*
corresponder a um diretório, o conteúdo desse diretório será mostrado em vez do próprio diretório. Mas não haveria recursão além desse nível.Use este comando para evitar esse efeito:
for ... in
comandos comls
saída são arriscados.Em geral,
find
parece uma solução melhor oufonte