我想删除所有包含“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
。让我们在这里考虑一下这两个选项
文件名称包含
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
不区分大小写的变体。- 测试:
文件内容包括
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 -il
grep -iq
- 测试: