在一行中更改子目录中的多个文件名

在一行中更改子目录中的多个文件名

我有一个名为 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

相关内容