전체 파일 시스템에서 이름이 지정된 파일을 검색하려면 bash
다음 명령을 실행할 수 있습니다.
% find / -name "bash" 2> /dev/null
내 시스템에서 생성됨
/bin/bash
/etc/apparmor.d/abstractions/bash
/usr/share/doc/bash
/usr/share/lintian/overrides/bash
/usr/share/menu/bash
/rofs/bin/bash
/rofs/etc/apparmor.d/abstractions/bash
/rofs/usr/share/doc/bash
/rofs/usr/share/lintian/overrides/bash
/rofs/usr/share/menu/bash
괜찮습니다. 하지만 시스템에 이 파일이 있어야 하는 특정 디렉터리가 있다는 것을 알고 있습니다.아니요, 검색을 보다 효율적으로 만들기 위해 명령을 다음과 같이 업데이트했습니다.
% find / \
-name "proc" -prune -o \
-name "sys" -prune -o \
-name "run" -prune -o \
-name "bash" \
2> /dev/null
이제 관련 없는 파일로 가득 찬 화면이 나타납니다. 왜 이 작업을 수행합니까 find
?
버전 찾기
% find --version
find (GNU findutils) 4.7.0-git
답변1
최종 작업을 지정하지 않았으므로 find
완료된 것처럼 처리하세요.
find / \( -name .. -prune -o -name .... -o -name bash \) -print
"-prune"은 true를 반환하므로 이러한 디렉터리를 인쇄합니다. 이는 이라고 불리는 모든 디렉토리 sys
, 이라고 불리는 모든 디렉토리 proc
등을 의미합니다. 커널 소스 코드가 있다면 분명히 많은 디렉토리가 있을 것입니다!
예를 들어
/sys
/var/run
/proc
/usr/src/linux-headers-3.16.0-4-amd64/include/config/sys
/usr/src/linux-headers-3.16.0-4-amd64/include/config/keys/debug/proc
/usr/src/linux-headers-3.16.0-4-amd64/include/config/nf/conntrack/proc
/usr/src/linux-headers-3.16.0-4-amd64/include/config/proc
sys
이것들은 모두 or run
또는 or 라고 불립니다 proc
.
-print
간단한 대답은
% find / -name "proc" -prune -o \
-name "sys" -prune -o \
-name "run" -prune -o \
-name "bash" -print \
2> /dev/null
이제 항목 find
만 인쇄됩니다.bash
예를 들어
/usr/share/doc/bash
/usr/share/lintian/overrides/bash
/usr/share/menu/bash
/bin/bash