마운트 된 공유를 검색하지 않고 찾기 / grep 명령


34

find 명령을 사용할 때는 거의 항상 로컬 드라이브를 검색해야합니다. 그러나 거의 항상 초대형 네트워크 공유가 마운트되어 있으며 검색에 포함됩니다. find 명령, grep 및 기타 유사한 명령에서 쉽게 제외 할 수 있습니까? 예:

/ 이름 .vimrc 찾기

답변:


46

-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

그레프에도 효과가 있습니까?
Flotsam N. Jetsam

1
나는 grep이 그런 옵션을 가지고 있다고 생각하지 않습니다. 나는 보통 사용 find에 파이프를 grep이 답변에서와 같이 superuser.com/questions/80033/...을 . 최근에 ack( betterthangrep.com )을 대신 사용 했지만 ack로컬 드라이브 만 검색하는 옵션이없는 것 같습니다.
Doug Harris

내 편집 내용이 거부되었으므로 의견을 남기십시오. 기본적으로 첫 번째 예는 추가 -prune해야합니다. 그렇지 않으면 원치 않는 파일 시스템을 계속 통과 할 수 있습니다. 내가 믿는 두 번째 예는 -path대신 -name경로를 무시합니다. FWIW ... 마지막 예제가 작동하고 "현재 파일 시스템"에 머물러 있으므로 다른 것을 가로 지르지 않습니다.
rogerdpack

20

man find 보여줍니다 :

-xdev 다른 파일 시스템에서 디렉토리를 내리지 마십시오.


2
-xdev-mountFWIW 와 같습니다 ... :)
rogerdpack

0

원래 질문은 로컬 디스크에서만 찾을 수 있었으므로 완전성을 기하기 위해 여기에 내가 사용한 것이 있습니다.

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으로 설정해야합니다.

희망이 도움이됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.