Я пытаюсь ls некоторые файлы с шаблоном в каталоге. Я только хочу сканировать первый уровень не рекурсивный.
Мой сценарий:
for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
echo $i;
done
Выше команды сканирование рекурсивно. Как можно сделать это только для сканирования каталога первого уровня?
bash
shell-script
ls
ПАВ
источник
источник
printf %s\\n "$INCOMINGDIR/"*"$BUSINESSDATE"*
Ответы:
Не разобрать
ls
. Также не используйте ALL_CAPS_VARSИнтерактивно,
ls
есть-d
опция, которая предотвращает спуск в подкаталоги:источник
"${i}"
. Вы никогда не знаете, что может бытьi
.my_file.doc[newline]another_persons_file.doc
и надеяться, что некоторые сценарии могут попытаться «rm», что он видит как 2 имени файла ... Ссылка Гленна является обязательным для прочтения (на mywiki.wooledge.org, каждый должен прочитать весь FAQ, а также страница подводных камней)ls -d .*
Нет причин, по которым эта команда должна быть рекурсивной. Но если
$INCOMINGDIR/*$BUSSINESSDATE*
соответствует каталогу, то содержимое этого каталога показывается вместо самого каталога. Но не было бы рекурсии за пределами этого уровня.Используйте эту команду, чтобы избежать этого эффекта:
for ... in
Команды сls
выводом являются рискованными.В общем,
find
кажется, лучшее решение илиисточник