![在每个子目录中运行命令集](https://linux22.com/image/1320355/%E5%9C%A8%E6%AF%8F%E4%B8%AA%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4%E9%9B%86.png)
我有以下命令,我想在当前工作目录的每个子目录中运行它们。命令如下:
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"
完全按照你的四行代码所做的事情去做。