![使用bash脚本重命名文件](https://linux22.com/image/116170/%E4%BD%BF%E7%94%A8bash%E8%84%9A%E6%9C%AC%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6.png)
父路径是/opt/data/
,文件夹内data
有多个子文件夹,这些子文件夹内有多个文件,我想使用 bash 仅重命名其中的一部分。
原始文件名:
WK6LZTPR99999999_dig_2017-07-10 01:55:57.xy
我想将所有子目录中的所有文件更改为:
WK6LZTPR99999999_cur_2017-07-10 01:55:57.mp3
希望我能清楚地阐述这个场景。
philiphs 给出的解决方案工作很好,但它也在目录中更改其他文件扩展名,我只想更改 .xy 文件张力,然后应排除该扩展名。
答案1
您可以使用 for 循环遍历所有文件,然后使用${variable%suffix}
语法删除后缀,最后用以下语法替换中间部分${variable/search/replace}
:
for file in /opt/data/*/*; do
file="${file%xy}"
mv "$file"xy "${file/dig/cur}mp3"
done