如何在“.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
答案 0 :(得分:0)
要重命名包含子字符串car
的所有文件,请使用扩展名,但不能使用.fasta
扩展名:
find . ! -name "*.fasta" -name "*car*.*" -execdir sh -c 'mv "$1" "${1%.*}.fasta"' _ {} \;
对于find
到exec
使用短sh
脚本(在文件的dir
中),必须满足这两个条件:文件名不得以{{1结尾和文件名必须包含.fasta
。 car
将为匹配的每个文件执行find
脚本,通过占位符sh
提供文件名作为脚本的第一个位置参数。
在脚本中,我们使用shell parameter expansion去除任何扩展程序(${var%pat}
)并将其替换为{}
。