如何找到匹配模式的每个文件和目录,不包括使用 的一个目录find
?
假设我有以下文件结构;
. foo-排除-我/ foo.txt foo-exclude-me-not/ foo.txt 酒吧/ foo.txt foobar/ 栏.txt foofoo.txt
我将如何使用以下输出find
:
./bar/foo.txt ./bar/foobar ./bar/foobar/foofoo.txt ./foo-exclude-me-not ./foo-exclude-me-not/foo.txt
我尝试使用以下两个命令:
找 。-name 'foo-exclude-me' -prune -o -name 'foo*' 找 。-name 'foo*' \! -path './foo-exclude-me/*'
但他们都返回这个:
./bar/foo.txt
./bar/foobar
./bar/foobar/foofoo.txt
./foo-exclude-me # << this should be excluded
./foo-exclude-me-not
./foo-exclude-me-not/foo.txt
Run Code Online (Sandbox Code Playgroud)
如何正确排除foo-exclude-me
目录?
我需要从磁盘卷生成文件列表。一些目录(根目录下的所有隐藏目录)具有奇怪的权限,导致 find 抱怨。
我尝试排除所有这些路径,但一个目录仍然抱怨:
find . -type f -not -path './.*/*'
find: ./.DocumentRevisions-V100: Permission denied
Run Code Online (Sandbox Code Playgroud)
权限是这样的(由操作系统设置,所以我认为它们不应该被弄乱)。
d--x--x--x root wheel .DocumentRevisions-V100
Run Code Online (Sandbox Code Playgroud)
如何更改find
语句以有效地省略所有隐藏目录,以免抱怨。(我不想这样做,2>/dev/null
因为我想了解其他问题)。
我有一个目录/srv/tftp/pxelinux.cfg
和一个文件/etc/mtab
。我想从find
. 但无论我做什么,都不排除任何一个
find /etc /srv -path /srv/tftp/pxelinux.cfg -prune -o \! -path /etc/mtab
find /etc /srv \( -path /srv/tftp/pxelinux.cfg -prune -o -print \) -a \( \! -path /etc/mtab \)
Run Code Online (Sandbox Code Playgroud)
注意:我发现-path /foo -prune -o -print
语法非常混乱且不直观