从文件名中删除日期,逗号和句点

时间:2014-12-16 20:50:31

标签: linux rename

我有以下名称的文件,我想删除文件名中的所有日期,句号和逗号

原始文件名:

Employee Data 8.31.2014 v4.txt  
Hire, Transfer and Termination event 6.30.2013 to 8.31.2014v2.txt  
Expected Work Days 8.31.2014.txt

Employee Data 9.30.2014 v4.txt  
Hire, Transfer, Termination Event 6.30.2013 to 9.30.2014 v2.txt  
Expected Work Days 9.30.2014.txt

这是我想要实现的目标:

Employee Data.txt  
Hire Transfer Termination Event.txt  
Expected Work Days.txt

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

不幸的是,你在文件中使用空格会遇到很多问题,所以一个内衬不会剪切它(使用exec和sed查找)至少我不想弄清楚所有必要的引用。所以我建议使用一个小的for循环并设置ISF系统变量(如果不是空白将干扰)。这会导致你这样的事情:

IFS=$(echo -en "\n\b")

将ISF设置为中断(而不是默认空格,请在此处详细了解:http://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html

然后一个小的for循环,以便能够在每个文件上使用sed。假设您要更改文件夹中的所有文件,并且其子项使用

$(find . -name "*.txt")

循环遍历:

for file in $(find . -name "*.txt"); do echo $file; done; 

现在我们想了解变化。逗号很容易使用:

for file in $(find . -name "*.txt"); do mv $file $(echo $file | sed -e s/,//); done;

期间,您可能想要决定是否要先删除日期。对于日期,您可能想知道您的所有日期是否符合格式D [D] .MM.YYYY。第二个问题可能是你不想删除文件类型之前的点。我想指出几个关于sed和正则表达式主题的其他问题。 例如在这里:How to match date mm/dd/yyyy