파인더에서 "Permission Denied" 인쇄물을 제거하려면 어떻게 해야 합니까?

파인더에서 "Permission Denied" 인쇄물을 제거하려면 어떻게 해야 합니까?

암호

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

사용자가 볼 수 있는 파일만 표시됩니다.

관련 정보