我想更改大量文件的扩展名
示例:“ABC.dat.length.doc.fasta”
所需: ABC.mat
答案 0 :(得分: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
答案 1 :(得分:3)
除了使用bash
或awk
之外,还可以使用很少使用的命令行工具rename
:
rename .dat.length.doc.fasta .mat *.dat.length.doc.fasta
这将替换第一个参数,第二个参数用于提供的文件是后续参数(此处由*.dat.length.doc.fasta
的shell扩展表示。)
答案 2 :(得分:1)
prename 可以轻松地为您完成此操作。使用正则表达式来定位和重命名文件。
prename 's/(.*)\.dat\.length\.doc\.fasta/$1.mat/' *.dat.length.doc.fasta
答案 3 :(得分:0)
你可以使用AWK在一行中完成:
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
答案 4 :(得分:0)
ls -1 *.dat.length.doc.fasta | nawk '{p=$0;gsub("dat.length.doc.fasta","mat");system("mv "p" "$0); }'