大量のファイルの拡張子を変更したい、
例: 「ABC.dat.length.doc.fasta」
希望:ABC.mat
ループbash
でパラメーター展開を使用できます。for
for file in *.length.doc.fasta
do
mv "$file" "${file%dat.length.doc.fasta}"mat
done
それを行う別の方法:
for file in *.length.doc.fasta
do
mv "$file" "${file%%.*}".mat
done
または、めったに使用されないコマンド ライン ツールを使用することもできbash
ます。awk
rename
rename .dat.length.doc.fasta .mat *.dat.length.doc.fasta
これは、提供されたファイルの最初の引数を 2 番目の引数に置き換えます。これは、後続の引数です (ここでは のシェル展開で表されます*.dat.length.doc.fasta
)。
prenameはこれを簡単に行います。正規表現を使用して、ファイルを見つけて名前を変更します。
prename 's/(.*)\.dat\.length\.doc\.fasta/$1.mat/' *.dat.length.doc.fasta
ls -1 *.dat.length.doc.fasta | nawk '{p=$0;gsub("dat.length.doc.fasta","mat");system("mv "p" "$0); }'
AWK を使用して 1 行で実行できます。
ls -1 *.dat.length.doc.fasta | awk -F"." '{system("mv "$0" "$1".mat")}' -
入力:
$ ls
ABC.dat.length.doc.fasta
ABCD.dat.length.doc.fasta
ABCDE.dat.length.doc.fasta
do_not_touch.txt
出力:
$ ls
ABCDE.mat
ABCD.mat
ABC.mat
do_not_touch.txt