![찾기: 파일과 디렉터리를 제외하려면 -path와 -prune을 결합하세요.](https://linux55.com/image/3218/%EC%B0%BE%EA%B8%B0%3A%20%ED%8C%8C%EC%9D%BC%EA%B3%BC%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EC%A0%9C%EC%99%B8%ED%95%98%EB%A0%A4%EB%A9%B4%20-path%EC%99%80%20-prune%EC%9D%84%20%EA%B2%B0%ED%95%A9%ED%95%98%EC%84%B8%EC%9A%94..png)
디렉토리 /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"를 나타냅니다.