如何更改具有特定单词的文件以结束linux中的in.fasta

时间:2017-11-03 13:53:25

标签: linux filenames fasta

如何在“.fasta”中选择并更改包含特定单词的文件?

例如 我正在选择带有“car”字样的文件。

find /home/user -name "*car*"

给了我

/home/user/car.txt
/home/user/scar.fa
/home/user/cart.fa
/home/user/scart.fasta

但我不知道如何改变它们所以它们都以“.fasta”结尾

所以最终结果是

/home/user/car.fasta
/home/user/scar.fasta
/home/user/cart.fasta
/home/user/scart.fasta

1 个答案:

答案 0 :(得分:0)

要重命名包含子字符串car的所有文件,请使用扩展名,但不能使用.fasta扩展名:

find . ! -name "*.fasta" -name "*car*.*" -execdir sh -c 'mv "$1" "${1%.*}.fasta"' _ {} \;

对于findexec使用短sh脚本(在文件的dir中),必须满足这两个条件:文件名不得以{{1结尾和文件名必须包含.fastacar将为匹配的每个文件执行find脚本,通过占位符sh提供文件名作为脚本的第一个位置参数。

在脚本中,我们使用shell parameter expansion去除任何扩展程序(${var%pat})并将其替换为{}