Como ls sem recursiva

15

Eu estou tentando ls alguns arquivos com um padrão em um diretório. Eu só quero digitalizar o primeiro nível não recursivo.

Meu script:

for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
  echo $i;
done

Acima, o comando digitaliza recursivamente. Como pode fazer isso apenas para verificar o diretório de primeiro nível?

    
por Sas 15.01.2015 / 20:37

2 respostas

30

Não analise ls . Também não use ALL_CAPS_VARS

for i in "$incoming_dir"/*"$business_date"*; do

Interativamente, ls tem uma opção -d que impede a exibição em subdiretórios:

ls -d $INCOMINGDIR/*$BUSSINESSDATE*
    
por 15.01.2015 / 20:50
7

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 no lugar do próprio diretório. Mas não haveria recursão além desse nível.

Use este comando para evitar esse efeito:

ls -d "$INCOMINGDIR/"*"$BUSSINESSDATE"*
Os comandos

for ... in com ls output são arriscados.

Em geral, find parece uma solução melhor ou

for i in "$INCOMINGDIR/"*"$BUSSINESSDATE"*
    
por 15.01.2015 / 20:53