다음 에서 권한 거부 메시지를 모두 숨겨야합니다 .
find . > files_and_folders
그런 메시지가 나올 때 실험 중입니다. 발생하지 않는 모든 폴더와 파일을 수집해야합니다.
권한 수준을 files_and_folders
파일로 지정할 수 있습니까?
동시에 오류를 숨기려면 어떻게해야합니까?
다음 에서 권한 거부 메시지를 모두 숨겨야합니다 .
find . > files_and_folders
그런 메시지가 나올 때 실험 중입니다. 발생하지 않는 모든 폴더와 파일을 수집해야합니다.
권한 수준을 files_and_folders
파일로 지정할 수 있습니까?
동시에 오류를 숨기려면 어떻게해야합니까?
답변:
참고 :
*이 답변은 사용 사례보다 더 깊어 find 2>/dev/null
질 수 있으며 많은 상황에서 충분할 수 있습니다. 크로스 플랫폼 관점과 가능한 한 강력한 솔루션을 찾는 데 관심이있는 일부 고급 쉘 기술에 대한 논의에 여전히 관심이있을 수 있습니다.
* 시스템이 현지화 된 오류 메시지 를 표시하도록 구성된 경우 영어 메시지가보고 되도록 find
아래 의 호출 앞에 LC_ALL=C
( LC_ALL=C find ...
)를 붙이면 의도 한대로 작동합니다. 변함없이, 그러나, 오류 메시지 않습니다 표시 얻을는 영어로도됩니다. grep -v 'Permission denied'
귀하의 경우 쉘이 bash
나zsh
, 거기에 합리적으로 간단하면서 강력 솔루션 사용, 단지 POSIX 호환 find
기능 ; 반면 bash
POSIX의 일부가 아닌 자체, 가장 현대적인 유닉스 플랫폼은이 솔루션이 널리 휴대하고, 그와 함께 :
find . > files_and_folders 2> >(grep -v 'Permission denied' >&2)
참고 : 전체 명령이 내부 명령이 완료 grep
될 때까지 기다리지 않기 때문에 일부 출력이 완료된 후 도착할 가능성이 적습니다 . 에서가 , 당신은 추가하여이 문제를 방지 할 수 있습니다 명령에.find
>(...)
bash
| cat
>(...)
A (거의 사용하지 않음)입니다 출력 프로세스 대체 (이 경우 출력을 리디렉션 허용, 표준 에러의 출력 ( 2>
명령 내부의 표준 입력으로) >(...)
.
에 추가 bash
하고 zsh
, ksh
뿐만 아니라 지원을 원칙으로 하지만,에서 리디렉션을 결합하는 시도 여기에서 수행 된 stderr ( 2> >(...)
) 은 자동으로 무시되는 것으로 보입니다 ( ksh 93u+
).
grep -v 'Permission denied'
구문을 포함하는 모든 명령 행 ( 명령의 stderr 스트림에서)을 필터링 하고 ( -v
) 나머지 행을 stderr ( ) 로 출력합니다 .find
Permission denied
>&2
이 접근법은 다음과 같습니다.
strong : 오류 메시지grep
에만 적용되며 (파일 경로와 오류 메시지의 조합으로 인해 오 탐지로 이어질 수 있음) 권한이 거부 된 오류 이외의 오류 메시지는 stderr로 전달됩니다.
side-effect free : find
의 종료 코드가 유지됩니다. 발생한 파일 시스템 항목 중 하나 이상에 액세스 할 수 없으면 종료 코드 가 발생합니다 (권한이 거부 된 1
오류 이외의 오류가 발생했는지 여부는 알려지지 않음 ).
완전히 POSIX 호환 솔루션에는 제한이 있거나 추가 작업이 필요합니다.
경우 find
의 출력이 포착 될 파일 어쨌든 (또는 전부 억제), 다음에서 파이프 라인 기반 솔루션 조나단 레플러의 대답은 간단하고, 강력하고, POSIX 호환은 다음과 같습니다
find . 2>&1 >files_and_folders | grep -v 'Permission denied' >&2
다음 리디렉션 문제의 순서가 있습니다 2>&1
와야 첫째 .
파일 앞쪽에 stdout 출력을 캡처 하면 파이프 라인을 통해 오류 메시지 만2>&1
보낼 수 있으며 ,이 메시지 는 명확하게 작동 할 수 있습니다.grep
는 유일한 단점이다 전반적인 종료 코드가 될 것입니다 grep
명령의 하지 find
가없는 경우 :이 경우 수단에의, 아니 모든 또는 오류 만 허락-거부 오류, 종료 코드가 될 것이다 1
(신호 실패 (그렇지 않으면) 권한 거부 오류 이외의 오류) 0
-의도의 반대입니다.
그러나 find
'종료 코드는 존재하지 않는 경로를 전달하는 것과 같은 근본적인 실패를 넘어 정보를 거의 전달하지 않기 때문에 어쨌든 거의 사용되지 않습니다 .
그러나 일부 의 경우에만입력 경로에 의한 권한의 부족으로 액세스가되는 됩니다 에 반영 find
(GNU와 BSD 모두의 종료 코드 find
) : 사용 권한 - 거부 오류가 발생하면 모든 처리 된 파일의 종료 코드로 설정됩니다 1
.
다음과 같은 변형이 다음을 해결합니다.
find . 2>&1 >files_and_folders | { grep -v 'Permission denied' >&2; [ $? -eq 1 ]; }
이제 종료 코드는 다른 오류 가Permission denied
발생 했는지 여부를 나타냅니다 ( 1
그렇다면 0
그렇지 않은 경우).
즉 : 성공 (: 종료 코드는 이제 명령의 진정한 의도를 반영하는 0
) 모든 또는 오류 경우,보고 만 있는 권한 - 거부 오류가 발생하지합니다.
이것은 find
상단의 솔루션에서와 같이 종료 코드를 전달하는 것보다 훨씬 낫습니다 .
gniourf_gniourf 코멘트에은 (여전히 POSIX 호환) 제안 정교한 리디렉션을 사용하여이 솔루션의 일반화 , 에 파일 경로 인쇄의 기본 동작으로도 작동 표준 출력 :
{ find . 3>&2 2>&1 1>&3 | grep -v 'Permission denied' >&3; } 3>&2 2>&1
한마디로 : 사용자 정의 파일 디스크립터 3
는 stdout ( 1
)과 stderr ( 2
) 를 임시로 교환하는 데 사용 되므로 오류 메시지 만grep
stdout 을 통해 파이프 될 수 있습니다 .
이러한 경로 재 지정이 없으면 데이터 (파일 경로) 와 오류 메시지가 모두 grep
stdout 을 통해 파이프되고 오류 메시지 와 이름 이 문구 를 포함 하는 (가설) 파일grep
을 구별 할 수 없습니다 . Permission denied
Permission denied
최초의 솔루션과 마찬가지로, 그러나, 종료 코드가 될 것보고 grep
의하지 find
적용 할 수 있습니다 위와 같이의,하지만 같은 수정.
에 대해 유의해야 할 몇 가지 포인트가 있습니다 마이클 Brux의 대답은 , find . ! -readable -prune -o -print
:
GNU 가 필요합니다 find
. 특히 macOS에서는 작동하지 않습니다. 물론, GNU와 함께 작동하는 명령 만 필요한 경우 find
에는 문제가되지 않습니다.
일부 Permission denied
오류는 여전히 나타날 수 있습니다 . 현재 사용자에게는 권한이 있지만 실행 가능한 권한 이없는 디렉토리 find ! -readable -prune
의 하위 항목에 대한 오류를보고합니다 . 그 이유는 디렉토리 자체 를 읽을 수 있고 실행되지 않기 때문에 해당 디렉토리 로 내려 가려고 하면 오류 메시지가 트리거 되기 때문입니다. 즉, 일반적인 경우는 권한이 누락 된 것입니다.r
x
-prune
r
참고 : 다음 사항은 철학 및 / 또는 특정 유스 케이스의 문제이며, 사용자와 관련이 없으며 특히 경로 를 인쇄 하는 것이 모든 경우 명령이 사용자의 요구에 적합하다고 결정할 수 있습니다 .
find
find
-name
. find . ! -readable -prune -o -name '*.txt'
-print
첫 번째 솔루션 조나단 레플러의 대답은 , find . 2>/dev/null > files_and_folders
그 자신이 상태로, 맹목적으로 침묵 모든 오류 메시지를 (그리고 그는 또한 설명으로 해결 방법은 완전히 강력한 가시고하지 않습니다). 그러나 실용적으로 말하자면 모든 오류가 권한과 관련이 있다고 가정하는 것이 가장 간단한 해결책 입니다.
안개의 대답은 , sudo find . > files_and_folders
, 간결하고 실용적인,하지만 단지 이외의 아무것도 경솔한입니다 인쇄 파일 이름 보안상의 이유로 : 당신이로 실행하고 있기 때문에 루트 사용자, "당신은 발견 버그로 엉망이되고 전체 시스템을 위험을 감수 또는 악의적 인 버전, 또는 정상적인 권한으로이 작업을 실행 한 경우 (에 의해 안개의 대답에 코멘트에서 "일어날 수없는 예기치 않게 뭔가를 기록 잘못된 호출, tripleee ).
에서 제 2 회 솔루션 viraptor의 대답은 , find . 2>&1 | grep -v 'Permission denied' > some_file
그리고 잠재적으로 대신보고 (때문에 파이프 라인을 통해 표준 출력과 표준 에러의 혼합을 보내기) 잘못된 반응의 위험을 실행 비 출력 경로와 함께 캡처, 그들에게 열려진 통해 -permission-거부 오류 출력 파일에.
{ find . 3>&2 2>&1 1>&3 | grep -v 'Permission denied' >&3; } 3>&2 2>&1
>(...)
는 Bash에 따라 다릅니다.
find
이 강조되고 광고되어야한다는 것을 확신하지 못합니다 find
. 종료 코드는 악명이 없습니다. 여기서는 0이 아닐 것입니다 (그리고 쓸모가 없습니다).
execute/search
는 디렉토리를 '검색'하기 위해 파일 모드 권한을 명시 적으로 요구합니다 (포함 된 파일의 inode 검색). find
하위 디렉토리로 내려 가기 위해 (디렉토리 read
에 파일을 나열 하는 권한이 필요함 )이를 수행합니다. 이것은 '버그'또는 '포팅 오류'가 아닙니다.
사용하다:
find . 2>/dev/null > files_and_folders
이것은 Permission denied
물론 오류뿐만 아니라 모든 오류 메시지를 숨 깁니다 .
심볼릭 링크에 너무 많은 홉과 같은 다른 가능한 오류를 유지하고 싶지만 권한이 거부 된 것이 아니라면 'permission denied'라는 파일이 많지 않다는 추측을해야합니다. 시도해보십시오 :
find . 2>&1 | grep -v 'Permission denied' > files_and_folders
표준 오류 만 엄격하게 필터링하려면보다 정교한 구성을 사용할 수 있습니다.
find . 2>&1 > files_and_folders | grep -v 'Permission denied' >&2
find
명령 의 I / O 리디렉션 은 다음과 같습니다 2>&1 > files_and_folders |
.. 파이프는 표준 출력을 grep
명령으로 리디렉션 하고 먼저 적용됩니다. 은 2>&1
표준 출력 (파이프)와 같은 장소에 표준 오차를 보낸다. 는 > files_and_folders
파일에 표준 출력 (그러나 표준없는 오류)을 보냅니다. 결과적으로 표준 오류에 기록 된 메시지가 파이프로 전송되고 일반 출력 find
이 파일에 기록됩니다. 는 grep
표준 출력이 최종 (당신은 당신이 원하는 선택, 및 로케일 및 O / S에 따라 철자를 변경해야 할 수 있습니다 방법을 결정할 수 있습니다) 필터>&2
생존 오류 메시지 (표준 출력에 기록됨)가 표준 오류로 한 번 더 이동 함을 의미합니다. 최종 리디렉션은 터미널에서 선택 사항으로 간주 될 수 있지만 표준 오류에 오류 메시지가 표시되도록 스크립트에서 사용하는 것이 좋습니다.
수행하려는 작업에 따라이 테마에는 끝없는 변형이 있습니다. 이것은 Bourne 쉘 파생물 (Bash, Korn,…) 및 POSIX 호환 버전의 모든 Unix 변형에서 작동합니다 find
.
find
시스템에 있는 특정 버전에 적응하려면 대체 옵션을 사용할 수 있습니다. find
특히 GNU 에는 다른 버전에서는 사용할 수없는 수많은 옵션이 있습니다. 이러한 옵션 중 하나에 대해서는 현재 허용되는 답변을 참조하십시오.
2>/dev/null
공간없이!
사용하다:
find . ! -readable -prune -o -print
또는 더 일반적으로
find <paths> ! -readable -prune -o <other conditions like -name> -print
작동 : find (GNU findutils) 4.4.2. 배경:
-readable
테스트 읽을 파일을 일치합니다. !
테스트가 false 인 경우 연산자는, true를 돌려줍니다. ! -readable
읽을 수없는 디렉토리 (& 파일) 와 일치합니다.-prune
조치는 디렉토리로 내려하지 않습니다.! -readable -prune
디렉토리를 읽을 수없는 경우 디렉토리로 내려 가지 마십시오.-readable
테스트 계정 액세스 제어 목록과 다른 권한 유물에 걸리는 -perm
테스트 무시합니다.자세한 내용은 find
(1) 맨 페이지 를 참조하십시오.
-o
같이 수행해야한다고 여기에 추가하는 것이 적절하다고 생각합니다 .find . ! -readable -prune -o -name '*.txt'
find
는 -readable
옵션으로 포함되지 않습니다 . find
BSD와 Mac OS X 도 마찬가지입니다 (다른 시스템에 대해서는 잘 모르겠습니다). 따라서 GNU가 find
보장 되는 곳에서는 훌륭하게 작동하지만 시스템에 GNU가 find
설치되어 있음을 보장 할 수없는 경우이를 어떻게 적용할지는 분명하지 않습니다 . (Linux에서는 잘 작동하지만 다른 곳에서는 작동하지 않을 수도 있습니다.)
find . ! -readable -prune -o -name '*.txt'
find 4.2.2를 사용하여 Ubuntu 14.04에서 작동하지 않는 것 같습니다. 그것은 ingore 것 같다 -name
. 어떤 이상한 이유로 나는 성공이find . \( ! -readable -prune \) -o -name '*.txt' -print
루트 "/"에서 검색을 시작하려면 다음과 같은 출력이 표시 될 것입니다.
find: /./proc/1731/fdinfo: Permission denied
find: /./proc/2032/task/2032/fd: Permission denied
허가 때문입니다. 이 문제를 해결하려면
sudo 명령을 사용할 수 있습니다 :
sudo find /. -name 'toBeSearched.file'
슈퍼 사용자의 암호를 묻습니다. 암호를 입력하면 원하는 결과가 표시됩니다. sudo 명령을 사용할 수있는 권한이없는 경우 수퍼 유저 암호가없는 경우 먼저 시스템 관리자에게 sudoers 파일에 추가하도록 요청하십시오.
(일반적으로 디스플레이 / 스크린)의 표준 오류 출력을 일부 파일로 리디렉션하고 화면에 오류 메시지가 표시되지 않도록 할 수 있습니다! 특수 파일 / dev / null로 리디렉션하십시오.
find /. -name 'toBeSearched.file' 2>/dev/null
표준 오류 출력을 (일반적으로 표시 / 화면)에서 표준 출력 (일반적으로 표시 / 화면)으로 재 지정한 다음 grep 명령을 -v "invert"매개 변수와 함께 파이프하여 'Permission denied'가있는 출력 행을 표시하지 않을 수 있습니다. 단어 쌍 :
find /. -name 'toBeSearched.file' 2>&1 | grep -v 'Permission denied'
sudo find...
나는 사용해야했다 :
find / -name expect 2>/dev/null
찾고자하는 이름을 지정한 다음 모든 오류를 / dev / null로 리디렉션하도록 지시합니다.
내가 찾던 기대 프로그램의 위치가 될 것으로 기대하십시오.
expect
. 대신 expect
이 명령이 찾으려는 파일의 이름입니다.
파이프 stderr
를 /dev/null
사용하여 2>을 / dev / null을
find . -name '...' 2>/dev/null
find . -name '...' -print 2>/dev/null
당신은 또한 사용할 수 있습니다 -perm
및 -prune
(참조 읽을 디렉토리로 내려 피하기 위해 조건을 ? 내가 찾기 프로그램에서 출력 문 "권한이 거부"를 제거하려면 어떻게 - 유닉스 및 리눅스 스택 교환 ) :
find . -type d ! -perm -g+r,u+r,o+r -prune -o -print > files_and_folders
-perm -g+r,u+r,o+r
파일의r
모든 보안 주체에 대해 (읽기) 권한이 설정된 파일과 일치 하며, 현재 사용자 가 해당 파일을 읽을 수 있는지 여부와 직접적인 관계가 없습니다. 현재 사용자 가 읽을 수 있는 파일을 놓칠 수없고 읽을 수없는 파일과 일치시킬 가능성이 있습니다.
find . -type d ! \( -perm -u+r -o -perm -g+r -o -perm -o+r \) -prune -o -print
좋은 해결책 이라고 생각 합니다.
-readable
하는 것은 불가능합니다. -perm
이전 주석을 참조 하고이 예제를 고려하십시오 : 사용자 읽기 비트가 설정되어 있기 때문에 echo 'hi' > file; sudo chown nobody:nobody file; sudo chmod o-r file; find file -perm -u=r
prints file
이지만 nobody
현재 사용자가 아닌 사용자와 관련이 있습니다. 현재 사용자는이 파일을 읽을 수 없습니다. 시도하십시오 cat file
. 이 답변 도 참조하십시오 .
Mac OS X -readable
은 스위치를 지원하지 않기 때문에 위의 접근 방식은 Mac OS X의 경우를 해결하지 않지만 출력에서 '권한 거부'오류를 피할 수있는 방법입니다. 이것은 누군가를 도울 수 있습니다.
find / -type f -name "your_pattern" 2>/dev/null
.
find
예를 들어, 디렉토리에서 특정 패턴의 파일 크기를 찾기 위해 다른 명령을 사용하는 경우 2>/dev/null
여전히 아래에 표시된 것처럼 작동합니다.
find . -type f -name "your_pattern" -exec du -ch {} + 2>/dev/null | grep total$
.
주어진 패턴의 파일의 전체 크기를 반환합니다. 2>/dev/null
find 명령의 끝에 유의하십시오 .
2>/dev/null
. 그 부분을 설명해 주시겠습니까 -exec du -ch {} + 2>/dev/null | grep total$
?
-exec
옵션 과 함께 모든 명령을 사용하여 명령으로 찾은 파일 또는 디렉토리에 대한 추가 조치를 수행 할 수 있습니다 find
. du -ch file_pattern
일치하는 각 파일의 크기를 계산하고 file_pattern
해당 출력의 마지막 행은에 일치하는 모든 파일의 총계입니다 file_pattern
. 에 대한 매뉴얼 페이지를 참조하십시오 du
. grep total
총계 (마지막 행)를 추출하는 행만 필터링하면됩니다.
find . > files_and_folders 2>&-
2>&-
-
표준 오류 파일 디스크립터 ( 2
)를 닫아 ( ) 모든 오류 메시지가 침묵되도록합니다.
1
' Permission denied
'오류가 인쇄되지 않으면 종료 코드는 계속 표시 됩니다.find
:find . -type d \! \( -readable -executable \) -prune -print -o -print > files_and_folders
에 추가 옵션을 전달 find
하는 -prune
(로 하강 방지)하지만 여전히 -print
디렉토리 ( (없음) ) 모두가 및 권한, 또는 ( ) 다른 파일을.-type
d
\!
-readable
-executable
-o
-print
-readable
및 -executable
옵션은 GNU의 확장의 일부가 아닌 POSIX 표준은Permission denied
비정상 / 손상 파일에서 여전히 ' '를 반환 할 수 있습니다 (예 : <v2.0.5를 사용하는 컨테이너 마운트 파일 시스템에 영향을주는 버그 보고서 참조 lxcfs
)find
(GNU, OSX / BSD 등)에서 작동하는 강력한 답변{ LC_ALL=C find . 3>&2 2>&1 1>&3 > files_and_folders | grep -v 'Permission denied'; [ $? = 1 ]; } 3>&2 2>&1
파이프 라인 을 사용 하여 표준 오류 스트림을에 전달 grep
하여 'Permission denied'
문자열을 포함하는 모든 행을 제거하십시오 .
LC_ALL=C
설정한다 POSIX 로케일 사용 환경 변수 , 3>&2 2>&1 1>&3
그리고 3>&2 2>&1
중복 파일 디스크립터 파이프로 표준 에러 스트림 grep
및 [ $? = 1 ]
용도 []
에 의해 반환 된 에러 코드를 반전하는 grep
원래의 동작을 근사화 find
.
'Permission denied'
출력 리디렉션으로 인한 오류를 필터링합니다 (예 : files_and_folders
파일 자체가 쓰기 가능하지 않은 경우 )echo 'hi' > file; sudo chown nobody:nobody file; sudo chmod o-r file; find file -perm -u=r
prints로 내 요점을 설명하겠습니다.하지만 file
사용자와 관련이 nobody
있습니다. 현재 사용자가 아닙니다. 현재 사용자는이 파일을 읽을 수 없습니다. 시도하십시오 cat file
.
-perm
. 사용자의 현재 권한을 결정하는 데 효과가없는 것 같습니다 . 이 답변에서 해당 대안을 제거했습니다.
권한 거부 경고 만 피하려면 찾기에서 읽을 수없는 파일을 잘라내어 무시하도록 find에 지시하십시오. 찾기에 OR로 표현식을 추가하십시오.
find / \! -readable -prune -o -name '*.jbd' -ls
이것은 (읽을 수없는 파일과 일치시키고 목록에서 정리) OR ( * .jbd 와 같은 이름을 일치시키고 [ls]로 표시)라고 말합니다 . (또는-를 사용하지 않는 한 기본적으로 표현식은 AND로 묶여 있음을 기억하십시오.) 두 번째 표현식에 -ls가 필요하거나 find가 일치하는 항목을 표시하는 기본 조치를 추가하면 읽을 수없는 파일도 모두 표시됩니다. .
그러나 시스템에서 실제 파일을 찾는 경우 일반적으로 많은 파일이 많은 / dev를 찾을 이유가 없으므로 다음과 같이 해당 디렉토리를 제외하는 표현식을 추가해야합니다.
find / -mount \! -readable -prune -o -path /dev -prune -o -name '*.jbd' -ls
따라서 (읽을 수없는 파일과 일치하고 목록에서 정리) OR (경로 / dev 및 목록에서 제거) 또는 ( * .jbd 와 같은 파일을 일치 시키고 표시하십시오) .
사용하다
sudo find / -name file.txt
그것은 어리 석고 (검색을 높이기 때문에) 안전하지 않지만 쓰기는 훨씬 짧습니다.
sudo
. 버그 find
나 악의적 인 버전 으로 인해 시스템 전체가 엉망이 되거나 예상치 못한 무언가를 작성하는 잘못된 호출로 인해 정상적인 권한으로이를 실행하면 발생할 수 없습니다.
위의 답변 중 어느 것도 나를 위해 일하지 않았습니다. 인터넷에서 찾은 내용은 오류 숨기기입니다. 프로세스 리턴 코드 / 종료 코드를 올바르게 처리하지 않습니다. bash 스크립트 내에서 find 명령을 사용하여 일부 디렉토리를 찾은 다음 내용을 검사합니다. 종료 코드를 사용하여 명령 찾기 성공을 평가합니다. 값이 0이면 그렇지 않으면 실패합니다.
위에 제공 대답 에 의해 마이클 Brux은 가끔 작동합니다. 그러나 실패한 시나리오가 하나 있습니다! 나는 문제를 발견하고 스스로 고쳤다. 다음과 같은 경우 파일을 정리해야합니다.
it is a directory AND has no read access AND/OR has no execute access
여기에서 주요 이슈를 확인하십시오 : AND / OR. 내가 읽은 좋은 권장 조건 순서는 다음과 같습니다.
-type d ! -readable ! -executable -prune
항상 작동하지는 않습니다. 이는 일치가 다음과 같은 경우 제거가 트리거됨을 의미합니다.
it is directory AND no read access AND no execute access
읽기 액세스 권한이 부여되었지만 실행 액세스 권한이없는 경우이 표현식 시퀀스가 실패합니다.
몇 가지 테스트 후 나는 그것에 대해 깨달았고 쉘 스크립트 솔루션을 다음과 같이 변경했습니다.
좋은 찾기 / home * / -maxdepth 5 -follow \
\ (-type d -a ! \ (-readable -a-executable \) \) -prune \
-o \
\ (-type d -a -readable -a- 실행 파일 -a -name "$ {m_find_name}"\) -print
여기서 핵심은 결합 된 표현식에 "true"가 아닌 것을 배치하는 것입니다.
has read access AND has execute access
그렇지 않으면 전체 액세스 권한이 없습니다. 즉 정리하십시오. 이것은 이전에 제안 된 솔루션이 실패한 시나리오에서 저에게 효과적이었습니다.
의견 섹션에 질문에 대한 기술적 세부 사항을 아래에 제공합니다. 세부 정보가 과도하면 죄송합니다.
nice
및 find $HOME -maxdepth 5 -follow ...
?
${m_find_name}
), 그리고 질문에 관련이없는 몇 가지 옵션이 포함되어 있습니다 ( nice
, /home*
, -maxdepth 5
, -follow
). 나는 일반적인 목적을 유지하면서 '읽을 수 있지만 실행 가능한 디렉토리를 필터링하지 않음'이라는 특정 문제를보다 간결하게 해결하는 답변을 추가했습니다.
grep -v invert-match를 사용할 수 있습니다
-v, --invert-match select non-matching lines
이처럼 :
find . > files_and_folders
cat files_and_folders | grep -v "permission denied" > files_and_folders
마법에
-= MacOS의 경우 =-
별명을 사용하여 새 명령을 작성하십시오. ~ / .bash_profile 행에 추가하십시오.
alias search='find / -name $file 2>/dev/null'
그리고 새로운 터미널 창에서 그것을 호출 할 수 있습니다 :
$ file=<filename or mask>; search
예를 들면 다음과 같습니다.
$ 파일 = 등; 검색
CSH 또는 TCSH를 사용하는 경우 해결책은 다음과 같습니다.
( find . > files_and_folders ) >& /dev/null
터미널로 출력하려면 :
( find . > /dev/tty ) >& /dev/null
find . 2>&1 > files_and_folders | grep -v 'Permission denied' >&2
합니까?