【问题标题】:How to remove similar pattern files in bash [duplicate]如何在bash中删除类似的模式文件[重复]
【发布时间】:2022-02-15 17:13:16
【问题描述】:

试图删除文件“a.txt”

这行得通,

[ -f "a.txt" ] && rm -v -f a.txt

但是,如果我想删除多个文件“a.txt”、“a.txt.bak1”、“a.txt.bak2”,则以下语法不起作用

[ -f "a.txt*" ] && rm -v -f a.txt*

你能帮忙吗?

【问题讨论】:

  • 您真的需要在删除它们之前测试它们是否存在并且是常规文件吗?如果不是,为什么不简单地使用rm -fv a.txt*
  • 类似find -type f -name 'a.txt*' -print -delete.
  • 测试实际上应该做什么?如果您想知道是否存在至少一个与模式a.txt* 匹配的文件,则必须使用此模式的所有文件填充一个数组,然后测试该数组是否为空。但是,您为什么要测试文件是否存在?
  • 感谢@Fravadona 和大家的澄清。我会用 find 代替。

标签: bash shell sh


【解决方案1】:

为什么不使用匹配模式的查找名称,然后使用 exec 执行操作(包括文件检查)?

例如:

$ find . -maxdepth 1 -name "*.scala"  -type f -exec \md5sum {} \;
./dir1/analysis.scala
./soft/zla.scala

但是,这里是

【讨论】:

  • 谢谢@Bouquet。但是,我正在寻找是否可以使用简单的“rm”命令来做到这一点。
猜你喜欢
  • 2016-07-20
  • 2013-08-12
  • 2018-01-10
  • 1970-01-01
  • 2015-07-18
  • 2021-11-30
  • 2023-04-07
  • 2014-10-16
  • 2013-03-04
相关资源
最近更新 更多