ファイル拡張子なしでファイル名を変更する

ファイル拡張子なしでファイル名を変更する

KLLxxxx数字を表す)という名前の一連のファイルがあります。テキストファイルですが、ファイル拡張子はありません。それはKLLファイルの後に3桁の数字が来るだけです。私はそれらがすべてファイル拡張子で終わりたいと思います.fastqKLL123->のようなKLL123.fastq

だから私はこのコマンドを試しました。

mv KLL* KLL*.fastq

しかし、引き続きエラーメッセージが表示されます。

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

名前変更コマンドの機能について知っていますが、以前にPerlを使用したことがないため、これを処理する方法がわかりません。私はこれが基本的な質問であることを知っていますが、これはLinuxを初めて試しています。

答え1

prename...Perl式を使用して名前を変更します。次のコマンドはファイルリスト(KLL *)を取得します。各ファイルのKLLのフルネームと3つの数字(KLL\d{3}))を取得し、特殊な名前付き変数に保存します$1s式の先頭にあるtheは、最初の2つのグループの間にある項目を//2番目のグループの間にある項目に「置き換える」という意味です。これは完全なファイル名で、ここに$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' {} \;

.fastq3桁の数字で始まるすべてのファイル名に拡張子が追加されます。KLL

答え3

これには考えられる解決策がたくさんあります。次のいずれかを選択する必要があります。

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

関連情報