我在名为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很新,有人可以帮帮我吗?
答案 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