【问题标题】:How to change files with a specific word to end in.fasta in linux如何在linux中更改带有特定单词的文件以in.fasta结尾
【发布时间】:2017-11-03 13:53:24
【问题描述】:

如何选择并更改包含特定单词的文件以全部以“.fasta”结尾?

例如 我正在选择其中包含“汽车”一词的文件。

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

【问题讨论】:

  • Um... "*.car*.fasta*" (这应该在Unix & LinuxSuper User 询问,顺便说一句。这是一个基本的操作系统问题,而不是一个编程问题。 )
  • 抱歉发错地方了,我是新手。感谢您的提示
  • 你的意思是,如何更改查找查询,或者如何重命名文件?
  • 如何重命名文件。由于在我的示例中,所有带有“car”一词的文件都有不同的文件扩展名,所以我想更改它,所以它们都以“.fasta”结尾

标签: linux filenames fasta


【解决方案1】:

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

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

对于findexecute 短的sh 脚本(在文件的dir 中),必须满足两个条件:文件名不能以.fasta 结尾并且文件名必须包含car . find 将为每个匹配的文件执行 sh 脚本,通过占位符 {} 提供文件名作为脚本的第一个位置参数。

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

【讨论】:

  • 由于某种原因,我收到一条错误消息:'mv: cannot stat `': No such file or directory'
  • 检查编辑版本。现在它会在剥离文件之前确保文件 具有 扩展名。
  • @Maurice,这个解决方案好运吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
  • 2021-03-23
  • 2017-01-27
相关资源
最近更新 更多