使用linux命令行查找和删除文件

使用linux命令行查找和删除文件

我想删除所有包含“chrome”的文件。我在 Linux 上有这个命令:

    find . -type f -name '' -print -delete

名字后面我不知道该放什么。

我试过 *chrome* 或 *chrome*.*

有人知道怎么做吗?谢谢

答案1

不要忘记将模式括在引号中,以防止其被 shell 扩展,如下所示。首先运行它而不删除它,以验证它是否为您列出了正确的文件:

# find and delete all files with 'chrome' in the name
find . -type f -name '*chrome*' # -print -delete

答案2

我想删除所有包含“chrome”的文件

这很含糊 - 你要么是指文件名称包含chrome或你指的是其文件内容包括chrome。让我们在这里考虑一下这两个选项

  1. 文件名称包含chrome

    通常,您会指定检查的起始目录。如果您不指定,则很可能会看到它将从当前目录开始。在这里,我假设它是当前目录,因此我声明.

    • 测试:find . -type f -name '*chrome*' -print
    • 实际的:find . -type f -name '*chrome*' -print -delete

    您可以通过删除选项让删除变体悄悄地删除文件-print。您可以省略约束以仅考虑常规文件通过删除-type f

    这是区分大小写的 - 它会匹配shiny chrome bumper但不匹配Shiny Chrome Bumper。您可以替换-name-iname不区分大小写的变体。

  2. 文件内容包括chrome

    这里我还指定了.命令find从当前目录启动:

    • 测试:find . -type f -exec sh -c 'for f in "$@"; do grep -l chrome "$f"; done' _ {} +或者简单grep -rl chrome .
    • 实际的:find . -type f -exec sh -c 'for f in "$@"; do grep -l chrome "$f" && rm -f -- "$f"; done' _ {} +

    grep -l您可以通过更改为 来让删除变体安静地运行。您可以使用或grep -q使其不区分大小写。grep -ilgrep -iq

相关内容