【问题标题】:Find and delete .txt files in bash [duplicate]在 bash 中查找和删除 .txt 文件 [重复]
【发布时间】:2012-09-26 14:50:27
【问题描述】:

可能重复:
Command line: piping find results to rm

最近我的外部硬盘驱动器上装有我的照片(大多数都在 DVD 上,但是..)被一些分区 friggery。

幸运的是,我能够将 PhotoRec 与另一个 Unix 分区实用程序和 PDisk 重新组合在一起。

PhotoRec 返回了超过一千个文件夹,其中包含从 .txt 文件到重要 .NEF 的任何内容。

所以我尝试使用 unix 来简化排序,因为 OSX Finder 在选择和删除十亿个 .txt 文件的请求下会崩溃。

但是当我尝试查找和删除 txt 文件,或者递归查找所有 jpeg 并将其移动到一个名为 jpegs 的新文件夹中时,我遇到了一些问题。我是一个 unix 菜鸟,所以我需要一些帮助。

这是我在 bash 中所做的。 (我在 ls 将列出我需要操作的所有文件夹和文件的目录中)。

找到 . -name *.txt | rm

或

须藤找到。 -name *.txt | rm -f

所以它给了我一些我需要取消链接文件的 BS。随便。

我需要递归查找所有 .txt 文件并删除它们,最好是详细的。

谢谢。

【问题讨论】:

标签: bash unix


【解决方案1】:

您不能将文件名通过管道传输到 rm。您需要改用xargs。另外,请记住引用文件模式".txt" 否则shell 会扩展它。

find . -name "*.txt" | xargs rm

【讨论】:

  • 这似乎已经处理了 .txt 文件。出于某种原因,当我在那里之前做了一些 txt 文件时。当我的 bash 标题栏来回闪烁 rm 和 mv 时,也许我很早就 ^C'd。无论如何,照顾它谢谢。我会确保引用文件模式(它不在我的 Lynda OSX Unix 教程中)。
  • 这可能会对带有空格的文件名产生影响。如果他们的 find/xargs 组合可以处理它,那就更好了:find . -name "*.txt" -print0 | xargs -0 rm 创建 ASCII NUL 终止的字符串。
  • 确实如此。 Finder 找不到 .txt 文件。太棒了。
【解决方案2】:
find . -name "*.txt" -exec rm {} \;

【讨论】:

  • 这个更难记住,因为 {} \;业务结束
  • 这可能是真的,但是一旦你记住了这个语法,它就可以让你用find 命令返回的任何东西来做很多通用的事情。
【解决方案3】:
$ find  . -name "*.txt" -type f -delete

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 2011-10-26
    • 2019-11-08
    • 2019-08-28
    • 2022-06-11
    • 1970-01-01
    • 2013-03-04
    相关资源
    最近更新 更多