find 명령을 사용할 때는 거의 항상 로컬 드라이브를 검색해야합니다. 그러나 거의 항상 초대형 네트워크 공유가 마운트되어 있으며 검색에 포함됩니다. find 명령, grep 및 기타 유사한 명령에서 쉽게 제외 할 수 있습니까? 예:
/ 이름 .vimrc 찾기
find 명령을 사용할 때는 거의 항상 로컬 드라이브를 검색해야합니다. 그러나 거의 항상 초대형 네트워크 공유가 마운트되어 있으며 검색에 포함됩니다. find 명령, grep 및 기타 유사한 명령에서 쉽게 제외 할 수 있습니까? 예:
/ 이름 .vimrc 찾기
답변:
-fstype local
옵션을 사용하여 다음 을 찾으십시오.
find / -fstype local -name .vimrc
특정 경로 만 제외하려면 -prune
다음을 사용할 수 있습니다 .
find / -name /path/to/ignore -prune -o -name .vimrc
최신 정보:
local
사이비 - fstype이다는 OS X와 함께 제공 발견의 버전에서 사용할 수 있지만 GNU의 발견 (에없는 GNU의 발견에 의해 인식 fstypes ).
GNU find를 사용하고 있다면 (대부분의 Linux 시스템에서 사용됨) 대신 다음을 사용하는 것이 좋습니다 -mount
.
find / -mount -name .vimrc
find
에 파이프를 grep
이 답변에서와 같이 superuser.com/questions/80033/...을 . 최근에 ack
( betterthangrep.com )을 대신 사용 했지만 ack
로컬 드라이브 만 검색하는 옵션이없는 것 같습니다.
-prune
해야합니다. 그렇지 않으면 원치 않는 파일 시스템을 계속 통과 할 수 있습니다. 내가 믿는 두 번째 예는 -path
대신 -name
경로를 무시합니다. FWIW ... 마지막 예제가 작동하고 "현재 파일 시스템"에 머물러 있으므로 다른 것을 가로 지르지 않습니다.
원래 질문은 로컬 디스크에서만 찾을 수 있었으므로 완전성을 기하기 위해 여기에 내가 사용한 것이 있습니다.
for PART in `awk '(!/^#/ && $6 != "0" || $3 == "xfs" ) { print $2 }' /etc/fstab 2>/dev/null`; do find $PART -xdev -name .vimrc -print 2>/dev/null; done
fstab이 올바르게 설정되어 있으면 로컬 디스크 만 검색해야합니다. 즉, cifs mounts는 최종 플래그를 0으로 설정해야합니다. RHEL7로 갈 때 xfs 파일 시스템에 OR을 포함 시켰습니다. 다시 시작한 후 디스크 재구성을 수행 할 의도가 없으므로 0으로 설정해야합니다.
희망이 도움이됩니다.