KLLxxx
(x
数字を表す)という名前の一連のファイルがあります。テキストファイルですが、ファイル拡張子はありません。それはKLL
ファイルの後に3桁の数字が来るだけです。私はそれらがすべてファイル拡張子で終わりたいと思います.fastq
。KLL123
->のような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})
)を取得し、特殊な名前付き変数に保存します$1
。s
式の先頭にある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' {} \;
.fastq
3桁の数字で始まるすべてのファイル名に拡張子が追加されます。KLL
答え3
これには考えられる解決策がたくさんあります。次のいずれかを選択する必要があります。
for f in KLL*; do mv "$f" "$f.fastq"; done