使用单个命令在Linux中一次更改多个文件的文件名

使用单个命令在Linux中一次更改多个文件的文件名

我有多个文件,想要使用单个命令在文件名开头添加一个字符、添加扩展名并删除文件名中心的一个单词,我使用 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

相关内容