2

大量のファイルの拡張子を変更したい、

例: 「ABC.dat.length.doc.fasta」

希望:ABC.mat

4

5 に答える 5

5

ループ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
于 2012-09-21T07:43:41.240 に答える
3

または、めったに使用されないコマンド ライン ツールを使用することもできbashます。awkrename

rename .dat.length.doc.fasta .mat *.dat.length.doc.fasta

これは、提供されたファイルの最初の引数を 2 番目の引数に置き換えます。これは、後続の引数です (ここでは のシェル展開で表されます*.dat.length.doc.fasta)。

于 2012-09-21T09:32:26.760 に答える
1

prenameはこれを簡単に行います。正規表現を使用して、ファイルを見つけて名前を変更します。

prename 's/(.*)\.dat\.length\.doc\.fasta/$1.mat/' *.dat.length.doc.fasta
于 2012-09-21T16:52:54.000 に答える
0
ls -1 *.dat.length.doc.fasta | nawk '{p=$0;gsub("dat.length.doc.fasta","mat");system("mv "p" "$0); }'
于 2012-09-24T10:54:39.753 に答える
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
于 2012-09-21T08:05:05.867 に答える