
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
式の先頭の は、最初の 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' {} \;
これにより、 で始まり3 桁の数字が続く.fastq
ファイル名に拡張子が追加されます。KLL
答え3
ここでは多くの解決策が考えられますが、その 1 つが次の解決策です。
for f in KLL*; do mv "$f" "$f.fastq"; done