【问题标题】:`find` claims it deleted the files, `ls` claims it didn't [closed]`find`声称它删除了文件,`ls`声称它没有[关闭]
【发布时间】:2014-04-24 13:53:56
【问题描述】:

我尝试通过将一些图像与正则表达式匹配来删除它们,现在我以两种类似的方式执行此操作,都包括将find 的结果通过管道传输到rm。首先,我找到了我希望删除的所有图像:

find . -type f -regex ".+-[0-9]+x[0-9]+\.jpg"

这发现了很多结果。

所以我尝试像这样删除它们:

find . -type f -regex ".+-[0-9]+x[0-9]+\.jpg" -exec rm -rf {} \;

然后像这样:

find . -type f -regex ".+-[0-9]+x[0-9]+\.jpg" | xargs rm

两次尝试后,find 命令不再看到我想要删除的图像(当我再次运行第一个命令时),但ls 看到它们,Nautilus 也看到了。为了从硬盘中真正删除它们,我应该运行某种提交吗?

我尝试在 rm 手册页中搜索“commit”,在 find 手册页中搜索“remove”,但没有发现任何重要信息。

【问题讨论】:

  • 你能从ls 中拿出这些图片吗?
  • 还有很多,这是最后几行:yellow-zone-etna-36x36.png yellow-zone-etna-615x250.png yellow-zone-etna.png Yuri-Beletsky-comets_labels_1362113263.jpg ZANE-115x115.png ZANE-150x150.png ZANE-195x110.png ZANE-300x195.png ZANE-36x36.png ZANE-610x250.png Zane-AIRS1-.jpg ZANE-cimss.jpg ZANE-JTWC-forecast-track-115x115.png ZANE-JTWC-forecast-track-150x150.png ZANE-JTWC-forecast-track-195x110.png ZANE-JTWC-forecast-track-300x170.png ZANE-JTWC-forecast-track-36x36.png ZANE-JTWC-forecast-track-610x250.png ZANE-JTWC-forecast-track.png ZANE-MTSAT-vis0.jpg ZANE.png
  • 我不这么认为,当我在备份文件夹中运行原始的find . -type f -regex ".+-[0-9]+x[0-9]+\.jpg" 时,它会找到具有多个数字的图像(加号在那里,它似乎工作)
  • 我建议删除这个问题——它的答案不太可能对其他搜索有关使用find 进行删除的信息的人有所帮助。 (此外,问题和接受的答案都展示了不好的做法;与 find ... -print0 | xargs -0 -- rm -rf --find ... -exec rm -rf -- {} + 相比,find | xargs rm 是不好的做法;给出的现有方法在遇到异常文件名时会出现错误)。
  • 当然。我无法删除它,但我按照弹出窗口的建议将其标记为审核。

标签: linux shell rm


【解决方案1】:

您的正则表达式与这些文件名不匹配...

$ touch yellow-zone-etna-36x36.png yellow-zone-etna-615x250.png
$ find . -type f -regex ".+-[0-9]+x[0-9]+\.jpg"
$ # no output

因为您有 PNG,所以您正在寻找 JPEG,而且您还有与正则表达式不匹配的 JPEG。

【讨论】:

  • 哦,是的......废话,这是迄今为止我最糟糕的stackoverflow问题......谢谢伙计。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
相关资源
最近更新 更多