我有一个目录/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”。