如何在具有此结构的文件名列表中删除“myfile”一词?
mywork_myfile_XSOP.txt
mywork_myfile_ATTY.txt
mywork_myfile_ATPY.txt
Desired_output:
mywork_XSOP.txt
mywork_ATTY.txt
mywork_ATPY.txt
答案 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