[英]Bash scripting, loop through files in folder fails
我正在使用以下bash腳本代碼遍歷文件夾中的某些文件(所有以MOVIE開頭的文件):
for i in MY-FOLDER/MOVIE*
do
當文件夾中有文件時,它可以正常工作。 但是,如果沒有任何文件,它將以某種方式繼續運行,並認為它是一個名為MY-FOLDER / MOVIE *的文件。
我如何避免它進入之后的東西
do
文件夾中是否沒有文件?
使用nullglob
選項。
$ shopt -s nullglob
$ for i in zzz* ; do echo "$i" ; done
$
for i in $(find MY-FOLDER/MOVIE -type f); do
echo $i
done
find
實用程序是Linux的瑞士軍刀之一。 它從您提供的目錄開始,並根據您提供的選項在所有子目錄中查找所有文件。
-type f
將僅找到常規文件(而不是目錄)。
如我所寫,該命令還將在子目錄中查找文件。 您可以通過添加-maxdepth 1
來防止這種情況
8年后編輯(感謝評論, @ tadman !)
您可以完全避免循環
find . -type f -exec echo "{}" \;
這告訴find
通過將每個文件的名稱替換為{}
echo
顯每個文件的名稱。 要終止傳遞給-exec
的命令,必須使用轉義的分號。
for file in MY-FOLDER/MOVIE* do # Skip if not a file test -f "$file" || continue # Now you know it's a file. ... done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.