Bash

如何為所有目錄執行腳本?

  • March 14, 2018

假設我在包含 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

引用自:https://unix.stackexchange.com/questions/430089