암호
find / -name netcdf
산출
find: `/root/.dbus': Permission denied
find: `/root/.gconf': Permission denied
find: `/root/.gconfd': Permission denied
find: `/root/.gnome': Permission denied
find: `/root/.gnome2': Permission denied
find: `/root/.gnome2_private': Permission denied
답변1
이러한 메시지는 stderr로 전송되며 일반적으로 해당 출력 스트림에는 이러한 메시지만 표시됩니다. 명령줄에서 이 기능을 끄거나 리디렉션할 수 있습니다.
$ find / -name netcdf 2>&-
또는
$ find / -name netcdf 2>/dev/null
또한 루트 디렉터리(/)를 검색하는 경우 일반적으로 find가 모든 리소스를 소비하지 않도록 프로세스를 최적화하는 것이 좋습니다.
$ nice find / -name netcdf 2>&-
이는 프로세스의 우선순위를 낮추어 다른 프로세스에 더 많은 CPU 시간을 허용합니다. 물론 CPU를 사용하는 다른 것이 없으면 아무 것도 수행되지 않습니다. :) 기술적으로 말하면 NI 값(그래프 참조 ps -l
)은 PRI 값을 증가시킵니다. PRI 값이 낮을수록 우선순위가 높아집니다. ps -l
그것과 비교해보세요 nice ps -l
.
답변2
@Gilles의 답변을 지적하고 싶습니다.find가 권한에 대해 불평하게 만드는 경로 제외find
;기본적으로 읽을 수 없는 디렉토리에 떨어지지 않도록 하는 구성이 포함되어 있으며 그런 의미에서 아마도 조금 더 빠를 것입니다.
이것은 나에게 효과적인 것 같습니다.
GNU
find
또는 기타find
지원-readable
및-executable
술어의 경우:
find / -type d ! \( -readable -executable \) -prune -o -type f -name netcdf -print
아니면 이거:
find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print
어떤 이유로든 모두 추가해야 합니다 g+r,u+r,o+r
(단축키는 입니다 a+r
). 그렇지 않으면 그 중 하나가 생략되면 "권한 거부" 상황이 계속 발생할 수 있습니다.
내가 이것을 어떻게 보는지에 대한 분석은 다음과 같습니다. -a
(그리고) 연산자는 다음과 같습니다.find
두 술어 사이에 암시적):
find / # find starting from path /
-type d # match type is directory
! -perm -a+r # (and) match not permissions of `r`ead present
-prune # ignore what matched above and do not descend into it
-o # or (whatever didn't match above)
-type f # match type is file
-name 'netcdf' # (and) match name is 'netcdf'
-print # print what matched above
마지막 항목이 없으면 일부 추가 항목(비관련 ) -print
이 표시됩니다 . 일치하는 이름이 있는 항목만 인쇄하십시오(있는 경우).-name 'netcdf'
-print
답변3
대신 사용하십시오 locate(1)
:
$ locate netcdf
사용자가 볼 수 있는 파일만 표시됩니다.