我有一个名为 backup 的目录。Backup 包含几个名为 monday、tuesday、wednesday 的子目录...每个子文件夹都包含名为 filename.txt 的文件。我想将所有名称 filename.txt 更改为 someothername.txt。如何在 bash 中用一行代码完成此操作?
答案1
for f in backup/*/filename.txt; do mv "$f" "$(dirname "$f")/someothername.txt"; done
答案2
如果您想要保留基本名称,而只更改位于某些子目录中的一堆文件的扩展名,则可以这样做:
for f in ./*/*.yaml;
do mv ${f} "$(dirname "$f")/$(basename ${f%.*}).yml";
done
或者
for f in ./*/*.yaml;
do mv ${f} "${f%.*}.yml";
done