重新命名不含檔案副檔名的文件

重新命名不含檔案副檔名的文件

我有一系列名為KLLxxxx代表數字)的檔案。它們是文字文件,但沒有文件副檔名。只是KLL後面跟著三位數字的文件。我希望它們全部以檔案副檔名結尾.fastq。如KLL123-> KLL123.fastq

所以我嘗試使用這個命令

mv KLL* KLL*.fastq

但我不斷收到錯誤訊息:

mv: target 'KLL067.fastq' is not a directory

我知道重命名命令功能,但我以前從未使用過 Perl,所以我不知道如何處理這個問題。我知道這是一個基本問題,但這是我第一次嘗試 Linux。

答案1

prename....用 Perl 表達式重命名。以下命令取得文件清單 (KLL*),對於每個文件,它都會取得 KLL 的完整名稱加上三個數字 ( KLL\d{3})),並將其儲存到特殊的命名$1變數中。s表達式開頭的the表示將前兩個之間的內容「替換」//為第二組之間的內容,即完整檔案名稱$1並附加到.fastq其中。

prename 's/(KLL\d{3})/$1.fastq/' KLL*

答案2

find在您正在查看的目錄中執行以下命令即可解決問題:

find . -name 'KLL[0-9][0-9][0-9]' -exec sh -c 'mv $0 $0.fastq' {} \;

這會將擴展名添加到以三位數字開頭的.fastq任何檔案名稱中。KLL

答案3

這裡有很多可能的解決方案,這應該是一個:

for f in KLL*; do mv "$f" "$f.fastq"; done

相關內容