특정 권한이 있는 파일 목록 찾기

특정 권한이 있는 파일 목록 찾기

find 명령을 살펴보고 find . -maxdepth 1 -perm 521 > test.txt권한을 텍스트 파일로 출력하는 방법을 알아냈는데, 와 같은 간단한 명령만으로 이를 수행할 수 있습니까 ls? 제가 아는 한, ls권한을 구체적으로 참조할 수 있는 방법이 없는 것 같아서 검색할 특정 권한 집합을 제공할 수 없습니다.

제가 간과했을 수 있는 다른 간단한 방법이 있습니까?

답변1

find가장 간단한 방법입니다. zsh를 사용한다면 다음을 사용할 수 있습니다.글로벌 예선 f(또는 권한 비트만 특성화하기 위한 여러 다른 한정자)

printf '%s\n' *(f521)

또는

printf '%s\n' *(f[u=rx,g=w,o=x])

기호 표기법을 사용하세요(8진수 표기법이 문제가 되는 경우). D숨겨진 파일도 고려하려면 glob 한정자를 추가하세요.

기호 표기법도 와 함께 사용할 수 있습니다 find.

find . -perm u=rx,g=w,o=x

대부분의 구현에는 다음과 같은 것을 제공하는 조건자가 find있습니다 . 그렇지 않은 경우에는 언제든지 .-lsls -l-exec ls -ld -- {} +

답변2

어쩌면 비슷한 것을 찾고 있을 수도 있습니다.

ls -l | grep '^.r-x-w-r--'

이름에 줄 바꿈이 포함된 일치하는 권한이 있는 파일의 경우 해당 파일 이름의 첫 번째 줄만 보고됩니다. 또한 비슷한 이름의 파일 foobar<newline>xr-x-w-r--(또는 비슷한 이름의 파일에 대한 심볼릭 링크)이 존재하는 경우 오탐지를 제공할 수도 있습니다. 줄 기반 유틸리티(예: ) 사용 grep. 인쇄할 수 없는 문자(줄 바꿈 포함) -q를 .ls?

findIMHO, 파일 검색보다 더 좋은 도구 는 없습니다 . 간단하고 간단하며 매우 강력합니다. find ... -exec ...또는 를 사용하면 find ... -print0 | xargs -0 ...찾은 파일을 다양한 방법으로 쉽게 조작할 수 있습니다. 더 나은 일반 도구를 찾을 수 없다고 생각합니다.

답변3

마음에 들지 않으면 다음과 같은 표준 도구를 find사용할 수 있습니다 .statawk

shopt -s dotglob
awk '/^521/ {print $2}' <(stat -c "%a %n" *) > test.txt

dotglob에 숨겨진 파일을 포함할지 여부를 설정해야 합니다 *.

답변4

# ls -l | grep -e "-rw-r--r--"

-e이를 사용 grep하여 필요한 권한이 있는 모든 파일을 나열합니다.

관련 정보