如何在文件名列表中删除结构为"myfile"的单词?
mywork_myfile_XSOP.txt
mywork_myfile_ATTY.txt
mywork_myfile_ATPY.txt
期望输出:mywork_XSOP.txt
mywork_ATTY.txt
mywork_ATPY.txt
最简单的方法是使用通用的 rename
命令,该命令在大多数Unix系统中都可用。
rename 's/^mywork_myfile_/mywork_/' *
当然,这需要您在文件目录中操作。它不会覆盖文件。如果您希望这样做,只需传递-f选项。另外,请注意,有多个版本的rename
,其可能具有不同的选项。基于“将目录中所有文件从$filename_h重命名为$filename_half?”的此答案,这是一种方法:
for file in mywork_myfile*txt
do
mv "$file" "${file/_myfile/}"
done
$ file="mywork_myfile_XSOP.txt"
$ echo ${file/_myfile/}
mywork_XSOP.txt
#!/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
$()
而不是````。 - fedorquimv
的两个参数也应该被加上引号。 - chepner
bash
,所以我不会担心 POSIX 兼容性。尽管如此,一般来说,不能假设bash
是系统 shell(Ubuntu),或者系统 shell 是当前版本的bash
(Mac OS X)。 - chepnerbash
。现在将其删除。 - fedorqui