从文件名中删除日期但保留文件扩展名

时间:2014-11-07 03:11:26

标签: bash rename

我在名为current_dir的目录中有这样的文件:

my data-file 2014-10.txt
data file201409.txt

我想要

my data-file.txt
data file.txt

这是我试过的

rename 's/ *[0-9]{4}-?[0-9]{2}.*$//' current_dir/*.txt

但它也删除了.txt扩展名。

我对linux很新,有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:3)

重命名只会替换匹配的部分,因此从正则表达式中删除.*$会保留.txt

rename 's/ *[0-9]{4}-?[0-9]{2}//' current_dir/*.txt

实施例

$ rename -n 's/ *[0-9]{4}-?[0-9]{2}//' *.txt
rename(data file201409.txt, data file.txt)
rename(my data-file 2014-10.txt, my data-file.txt)

答案 1 :(得分:0)

你可以在bash中完成。只有当您确定日期部分位于左侧的.txt扩展名

旁边时
cd $current_dir
for file in *.txt
do
  mv "$file" "${file%%[0-9]*.txt}
done