从文件名中删除模式

时间:2013-12-18 17:09:20

标签: unix rename

如何在具有此结构的文件名列表中删除“myfile”一词?

mywork_myfile_XSOP.txt
mywork_myfile_ATTY.txt
mywork_myfile_ATPY.txt

Desired_output:

mywork_XSOP.txt
mywork_ATTY.txt
mywork_ATPY.txt    

3 个答案:

答案 0 :(得分:7)

最简单的方法是使用大多数Unices中提供的公共rename命令。

rename 's/^mywork_myfile_/mywork_/' *

这当然要求您在文件的目录中。这不会覆盖文件。如果你想要,只需传递-f选项。另外,请注意,rename的多个版本可能有不同的选项。

答案 1 :(得分:3)

基于this answer on“重命名所有文件”将目录中的所有文件从$ filename_h重命名为$ filename_half?“,这可能是一种方式:

for file in mywork_myfile*txt
do
   mv "$file" "${file/_myfile/}"
done

请注意,它使用bash字符串操作,如下所示:

$ file="mywork_myfile_XSOP.txt"
$ echo ${file/_myfile/}
mywork_XSOP.txt

答案 2 :(得分:3)

这适用于任何Posix shell ...

#!/bin/sh
for i
  in mywork_myfile_XSOP.txt \
     mywork_myfile_ATTY.txt \
     mywork_myfile_ATPY.txt; do
       set -x
       mv "$i" "$(echo $i | sed -e s/myfile_//)"
       set +x
done