640보다 높은 권한을 가진 모든 파일을 찾고 싶습니다. 아마도 이것은 find 및 exec 명령과 함께 사용될 수 있습니다. 하지만 내 지식은 그러한 작업에 충분하지 않습니다.
답변1
내 생각에 당신이 원하는 것은
find -perm -640 ! -perm 640
즉, 640에 최소한 모든 권한이 있고, 권한 비트가 640이 아닌 파일을 검색합니다. 즉, 소유자가 아닌 다른 사람이 실행하거나 쓸 수 있는 파일 또는 소유자가 읽고 쓸 수 있고 그룹이 읽을 수 있는 파일 중에서 누구나 읽을 수 있는(ACL이 없다고 가정) 파일을 검색합니다. 일반 파일에 제한을 추가하거나 -type f
최소한 ! -type d -o -type d -perm 750 ! -perm 750
디렉터리에 실행 권한을 부여할 수 있습니다.
0o640(실제로는 말이 안 됨)보다 높은 권한 비트(정수로 해석됨)를 사용하여 파일을 일치시키려면 몇 가지 사례를 열거해야 합니다. 비트 단위 표현을 보면 0o640보다 큰 0과 0o777 사이의 숫자를 만드는 두 가지 방법이 있습니다. 즉, 0o600 비트 외에 0o100 비트를 설정하거나 0o640 비트를 설정하는 것입니다. ! -perm 640
0o640 권한을 일치시키려면 마지막 권한을 제거하세요.
find -perm -700 -o -perm -640 ! -perm 640
답변2
이것은 자신이 사용하기 위해 편집할 수 있는 훌륭한 명령입니다.
find -perm -o+r -exec stat --printf='%A %a %n --- %F\n' {} \;
결과의 예:
-rw-r--r-- 644 dir1//file4 --- regular file
lrwxrwxrwx 777 dir1/file5 --- symbolic link
다른 사람에게 읽기 권한이 있는 파일을 찾습니다. 그런 다음 권한, 파일 경로 및 파일 유형을 기호 및 8진수 형식으로 인쇄합니다.
답변3
사용할 수 있는 줄은 다음과 같습니다.
find . -type f -printf %p:%m\\n | while read x; do name=${x%:*}; perm=${x#*:}; if [[ $perm -gt 640 ]]; then echo $name; fi done
이 명령은 현재 경로에서 모든 일반 파일을 찾아 해당 이름( %p
)과 권한( %m
)을 콜론으로 구분하여 인쇄합니다. 출력의 각 줄은 변수로 추가로 읽힌 $x
다음 변수 $name
sum 으로 나뉩니다 $perm
.
${x%:*}
방법접미사가 제거된 x 값을 반환합니다.
${x#:*}
방법접두사가 제거된 x 값을 반환합니다.
파일의 권한이 기준과 일치하면 파일 이름을 인쇄합니다.
추신: 사용 편의성을 위해 명령에 대한 별칭을 지정할 수 있습니다.
alias advfind='find ...'