Я пытаюсь распечатать все каталоги / подкаталоги из заданного начального каталога.
for i in $(ls -A -R -p); do
if [ -d "$i" ]; then
printf "%s/%s \n" "$PWD" "$i"
fi
done;
Этот скрипт возвращает все каталоги, найденные в. каталог и все файлы в этом каталоге, но по какой-то причине проверка не удалась для подкаталогов. Все каталоги заканчиваются на $ i, и результат выглядит точно так же.
Допустим, у меня есть следующая структура:
foo/bar/test
echo $ i print
foo/
bar/
test/
Пока содержимое папок перечислено так:
./foo:
file1
file2
./bar:
file1
file2
Тем не менее, оператор теста просто печатает:
PWD/TO/THIS/DIRECTORY/foo
По некоторым причинам он возвращает true для каталогов первого уровня, но false для всех подкаталогов.
(ls, вероятно, не очень хороший способ сделать это, и я был бы рад заявлению find, которое решает все мои проблемы, но сначала я хочу знать, почему этот скрипт не работает так, как вы думаете. )