
我想在目前工作目錄的每個子目錄中執行以下命令。以下是命令:
OUTPUTFN=`basename $PWD`
cat *.xml > $OUTPUTFN.txt
mv $OUTPUTFN.txt $OUTPUTFN.xml
mv $OUTPUTFN.xml ..
該目錄中有 700 多個資料夾,我希望它進入每個資料夾,執行這四個命令,然後轉到下一個,執行命令,然後重複。我嘗試將此網站中的多個範例與我的命令結合起來,但無法使其工作。
答案1
腳本
for DIR in *; do
[ -d "$DIR" ] && cat "$DIR"/*.xml > "$DIR.xml"
done
單線
for DIR in *; do [ -d "$DIR" ] && cat "$DIR"/*.xml > "$DIR.xml"; done
怎麼運作的
Bash 擴展
*
到目前目錄中的所有檔案和目錄。for DIR in *; do ... done
遍歷這些並...
為每一個執行。在每種情況下,
$DIR
都會儲存目前條目的名稱。[ -d "$DIR" ] && ...
檢查是否$DIR
確實是目錄(而不是檔案)。如果是,
...
則被處死。cat "$DIR"/*.xml > "$DIR.xml"
正是您的四行程式碼所做的事情。