如何在具有此結構的文件名列表中刪除單詞「myfile」?從文件名中刪除模式
mywork_myfile_XSOP.txt
mywork_myfile_ATTY.txt
mywork_myfile_ATPY.txt
Desired_output:
mywork_XSOP.txt
mywork_ATTY.txt
mywork_ATPY.txt
如何在具有此結構的文件名列表中刪除單詞「myfile」?從文件名中刪除模式
mywork_myfile_XSOP.txt
mywork_myfile_ATTY.txt
mywork_myfile_ATPY.txt
Desired_output:
mywork_XSOP.txt
mywork_ATTY.txt
mywork_ATPY.txt
最簡單的方法是使用普通rename
命令這在大多數Unix系統可用。
rename 's/^mywork_myfile_/mywork_/' *
這當然期望你在文件的目錄。這不會覆蓋文件。如果你想要的話,只需通過-f選項。此外,請注意,有多個rename
版本可能有不同的選項。
基於this answer的「重命名的所有文件 「在目錄中的所有文件重命名從$ 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
那麼,這*是最乾淨的方式。雖然它是特定於bash的,並且不會在其他shell中運行,即使其他posix風格的運行時也是如此,但這些日子可能還不錯。每個人都會運送禮物。 – DigitalRoss
這個問題被標記爲'bash',所以我不擔心POSIX的兼容性。也就是說,一般來說,不能認爲'bash'是系統shell(Ubuntu)或者系統shell是當前版本的'bash'(Mac OS X)。 – chepner
那麼,好點,實際上問題是*不*標籤bash。 – DigitalRoss