find
每当我使用它时,对我来说总是一个完全的谜;我只是想/mnt
从我的搜索中排除(我在 WSL 上的 Ubuntu 20.04 上的 bash 中,所以不希望它在 Windows 空间中搜索)下的所有内容,但find
只是错误地进入这些目录,完全忽略了我。我从这个页面找到了语法。/sf/ask/294702971/并尝试了所有变体 - 全部失败。
sudo find / -name \'git-credential-manager*\' -not -path \'/mnt/*\'\nsudo find / -name \'git-credential-manager*\' ! -path \'/mnt/*\'\nsudo find / -name \'git-credential-manager*\' ! -path \'*/mnt/*\'\n
Run Code Online (Sandbox Code Playgroud)\n当我这样做时,它只是犯了错误/mnt
并抛出错误(这确实令人沮丧,因为上面的语法看起来很清晰,并且 stackoverflow 页面语法似乎是正确的):
find: \xe2\x80\x98/mnt/d/$RECYCLE.BIN/New folder\xe2\x80\x99: Permission denied\nfind: \xe2\x80\x98/mnt/d/$RECYCLE.BIN/S-1-5-18\xe2\x80\x99: Permission denied\n
Run Code Online (Sandbox Code Playgroud)\n有人可以告诉我如何停止find
忽略我的目录排除开关吗?
ter*_*don 16
Find-path
不排除路径,这意味着“不报告名称与此路径匹配的任何匹配项”。它仍然会下降到目录中并搜索它们。你想要的是-prune
(来自man find
):
-prune True; if the file is a directory, do not descend into it. If\n -depth is given, then -prune has no effect. Because -delete\n implies -depth, you cannot usefully use -prune and -delete to\xe2\x80\x90\n gether. For example, to skip the directory src/emacs and all\n files and directories under it, and print the names of the\n other files found, do something like this:\n find . -path ./src/emacs -prune -o -print\n\n
Run Code Online (Sandbox Code Playgroud)\n所以你要:
\nsudo find / -path '/mnt/*' -prune -name 'git-credential-manager*' \n
Run Code Online (Sandbox Code Playgroud)\n-mount
虽然,根据您试图排除的内容,使用(GNU find
)或-xdev
(其他)可能更容易:
从man find
:
\n\n\n
-mount
不要降级其他文件系统上的目录。的替代名称-xdev
,用于与 find 的某些其他版本兼容。
所以:
\nsudo find / -mount -name 'git-credential-manager*' \n
Run Code Online (Sandbox Code Playgroud)\n
ilk*_*chu 11
它不会忽略该选项。谓词-path
针对遇到的每个文件进行评估,对于该树中的文件,它只是失败。它不会影响find
目录树的行走方式,并且您可以拥有类似的东西find . ! -path "./foo/*" -o -name '*.txt'
,可以匹配外部的所有内容,但也可以匹配其中的foo
文件。*.txt
GNU 手册页非常清楚地说明了在这里要做什么,请-prune
改为使用:
-path pattern
...要忽略整个目录树,请使用-prune
而不是检查树中的每个文件。例如,要跳过目录src/emacs
及其下的所有文件和目录,并打印找到的其他文件的名称,请执行以下操作:Run Code Online (Sandbox Code Playgroud)find . -path ./src/emacs -prune -o -print
归档时间: |
|
查看次数: |
5212 次 |
最近记录: |