find 명령으로 검색에서 proc 및 sys 폴더를 제외하는 방법은 무엇입니까?


10

임의의 디렉토리 경로를 선택하는 스크립트를 실행하고 싶었습니다.

find / -type d | shuf -n1 

불행히도 특정 디렉토리 입력 금지에 대한 오류 메시지가 나타납니다.

find를 사용하여 검색에서 디렉토리를 제외하려면 어떻게해야합니까?

답변:


13

Linux에서 특정 경로를 제외하려면 다음을 수행하십시오.

find / -path /sys -prune -o -path /proc -prune -o -type d

다른 접근 방식은 find다른 파일 시스템에서 재귀하지 않도록 지시하는 것입니다.

find / -xdev -type d

당신은 또한 사용할 수있는 위치를 (당신은 또한 수동으로 사용하여 업데이트 할 수 일반적으로 야간에 업데이트 된 파일 이름의 데이터베이스를 조회하는 updatedb대신 라이브 시스템의).

locate '*' | shuf -n 1

크고 짧고 통찰력이 있습니다. find / -xdev -type d 자체는 작동하지만 find / -xdev -type d | shuf -n 1은 오류 메시지를 표시합니다.
Abdul Al Hazred

1
@AbdulAlHazred 당신은 어떤 메시지를 말하지 않았지만 "허가 거부"오류라고 생각합니다. 명령을 루트로 실행하거나 오류를 stderr :로 보내 오류를 무시하십시오 find / -xdev -type d 2>/dev/null.
terdon

1
당신은 그냥 할 수 find / \( -path /sys -o -path /proc \) -prune -o -type d/dev/tmp
없습니까

6

GNU find를 사용하면 다음과 같은 정규식 옵션을 사용할 수도 있습니다.

find / -regextype posix-extended -regex "/(sys|srv|proc)" -prune -o -type d

지금까지 가장 좋은 방법은,이다 그 (폭언 : 그래서 엿 / PROC 구현 ;-)하지 않았다 다른 OS에 같은 GNU 리눅스에서 사용할 수있는 차종이 찾을 수있는 GNU 옵션 / 거기
플로리안 Heigl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.