find:结合 -path 和 -prune 排除文件和目录

find:结合 -path 和 -prune 排除文件和目录

我有一个目录/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 \)

注意:我发现-path /foo -prune -o -print语法非常混乱且不直观

答案1

尝试这个变体:

$ find /etc /srv \( -path /srv/tftp/pxelinux.cfg -o -path /etc/mtab \) \
    -prune -o -print

-path这将从列表中“删除”这两个参数中的任何一个,并打印其他所有内容。

答案2

这对我有用:

find . \! -path "./.git*" -a \! -name states_to_csv.pl

所以转换为你的应该是这样的

find /etc /srv \! -path "./srv/tftp/pxelinux.cfg*" -a \! -name /etc/mtab

-a 标志代表“and”。

相关内容