임의의 디렉터리 경로를 선택하는 스크립트를 실행하고 싶습니다.
find / -type d | shuf -n1
안타깝게도 특정 디렉터리가 차단되었다는 오류 메시지가 나타납니다.
find를 사용하여 검색에서 디렉토리를 제외하는 방법은 무엇입니까?
답변1
특정 경로를 제외하려면 Linux에서 다음을 수행하십시오.
find / -path /sys -prune -o -path /proc -prune -o -type d
또 다른 방법은 find
다른 파일 시스템에서 반복되지 않도록 지시하는 것입니다.
find / -xdev -type d
당신은 또한 사용할 수 있습니다위치updatedb
라이브 시스템 대신 파일 이름 데이터베이스(일반적으로 밤마다 업데이트되며 수동 업데이트를 사용할 수도 있음)를 쿼리합니다 .
locate '*' | shuf -n 1
답변2
GNU find를 사용하면 정규식 옵션을 사용할 수도 있습니다. 예를 들면 다음과 같습니다.
find / -regextype posix-extended -regex "/(sys|srv|proc)" -prune -o -type d
답변3
한 가지 방법은 단지포함하다실제 파일 시스템.
실제 파일 시스템의 모든 마운트 지점을 식별하고 한 줄에 입력합니다.
$ realfs=$(df -x tmpfs -x devtmpfs | tail -n +2 | awk '{print $6;}' | xargs)
$ echo $realfs
/ /home /dos /Data
find
이러한 마운트 지점에 대해서만 실행하십시오.
$ find ${realfs} -type d |& grep -v "Permission denied" | shuf -n1
/Data/share/source/pan2/.git/refs/tags
( |&
4.x에 bashism이 추가되었습니다. 4.4에서 작동합니다.)