Bash
如何為所有目錄執行腳本?
假設我在包含 script.sh 和子目錄的主目錄中,每個子目錄都包含圖像。
script.sh 是用於調整圖像大小的腳本。我想將此腳本應用於每個子目錄,因此在搜尋解決方案後我創建了另一個腳本
SAVEIFS=$IFS #Since the subdirectories contain whitespaces in their name IFS=$(echo -en "\n\b") for d in ./*; do if [ -d "$d" ]; then echo "$d" && cp ./script.sh ./$d/script.sh && cd "$d" && exec sh ./script.sh && cd .. fi done IFS=$SAVEIFS
問題是這個腳本在第一個子目錄完成後停止。我怎樣才能讓它在所有子目錄中執行?還是有更好的方法讓 script.sh 為所有子目錄執行?
find
救援!CURDIR=`pwd` IFS=$'\n' for d in $(find . -type d); do cd $CURDIR/"$d" $CURDIR/script.sh done
更好…從腳本中刪除“目錄中的所有文件”內容,並且:
IFS=$'\n' for f in $(find . -type f); do ./script.sh "$f" done