我是新來的腳本/編程/一切,似乎無法弄清這個bash腳本/循環我試圖迭代。嵌套循環在bash中沒有正確迭代?
我有一個名爲「文件夾」目錄,其中有很多的子目錄,每個包含我想呼應(現在)的文件
我有這個,但它似乎並沒有打印子目錄內的文件,而是自己打印子目錄。我將如何改變腳本來完成這項工作?
for directory in *;
do
for thing in $directory
do
echo $thing
done
done
我是新來的腳本/編程/一切,似乎無法弄清這個bash腳本/循環我試圖迭代。嵌套循環在bash中沒有正確迭代?
我有一個名爲「文件夾」目錄,其中有很多的子目錄,每個包含我想呼應(現在)的文件
我有這個,但它似乎並沒有打印子目錄內的文件,而是自己打印子目錄。我將如何改變腳本來完成這項工作?
for directory in *;
do
for thing in $directory
do
echo $thing
done
done
for
循環本身不遍歷文件系統;它只是遍歷一系列字符串。您需要遍歷第二個循環的路徑名擴展的結果。
for directory in *;
do
for thing in "$directory"/*
do
echo "$thing"
done
done
你可以用一個循環具有更復雜的模式做到這一點:
for thing in */*; do
echo "$thing"
done
不循環,你的意思是'some_command */*'嗎?我假定內部循環的主體比單個內置命令更復雜,在這種情況下,這會對大量匹配產生問題。 – chepner
你不想'$ {目錄}/*'?或者perphaps'(cd「$ directory」;對於*中的東西;做echo $ thing; done;)'。 – Droppy