我有多个文件,想要使用单个命令在文件名开头添加一个字符、添加扩展名并删除文件名中心的一个单词,我使用 bash 运行它。这是我的文件:
DATA_20210301_INPUT_CHECK
DATA_20210302_INPUT_CHECK
DATA_20210303_INPUT_CHECK
DATA_20210304_INPUT_CHECK
并希望将它们重命名(在一次操作中)为:
1_DATA_20210301_CHECK.DAT
1_DATA_20210302_CHECK.DAT
1_DATA_20210303_CHECK.DAT
1_DATA_20210304_CHECK.DAT
如何使用单个命令一次性更改所有文件名?据我所知,所有这些循环都一一进行
for f in *; do mv "$f" "$f.DAT"; done
for i in *; do mv "$i" 1_"$i"; done
for i in *; do mv "${i}" "${i//\_INPUT/}"; done
请帮助我,谢谢!
答案1
该rename
命令可以做到这一点。我知道有两个版本:GNU 和 Perl 正则表达式。
GNU:
rename DATA 1_DATA DATA*
正则表达式:
rename s/^/1_/ DATA*
运行rename --help
以查明您拥有哪个版本。
答案2
这实际上是两个命令,但它给出了您想要的输出:
rename 'DATA' '1_DATA' DATA_2021030*_INPUT_CHECK && rename 'CHECK' 'CHECK.DAT' *DATA_2021030*_INPUT_CHECK
输出:
1_DATA_20210301_INPUT_CHECK.DAT
1_DATA_20210302_INPUT_CHECK.DAT
1_DATA_20210303_INPUT_CHECK.DAT
1_DATA_20210304_INPUT_CHECK.DAT