我想更改大量文件的扩展名,
示例:“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
这会将第一个参数替换为所提供文件的第二个参数,即后续参数(此处由 的 shell 扩展表示*.dat.length.doc.fasta
)。
prename将为您轻松完成此操作。使用正则表达式来定位和重命名文件。
prename 's/(.*)\.dat\.length\.doc\.fasta/$1.mat/' *.dat.length.doc.fasta
您可以使用 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
ls -1 *.dat.length.doc.fasta | nawk '{p=$0;gsub("dat.length.doc.fasta","mat");system("mv "p" "$0); }'