
我有一系列名為KLLxxx
(x
代表數字)的檔案。它們是文字文件,但沒有文件副檔名。只是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