
acl이 설정된 모든 파일을 찾고 싶습니다. 나는 이 더러운 해결책을 알고 있습니다: dir에 acl이 설정된 모든 파일을 찾으려면. /등
sudo ls -lhR /etc|grep +
누군가 더 우아한 솔루션을 알고 있습니까?
답변1
+
쉽고 우아하다는 것은 달성하기 매우 높은 기준이며 파일 이름이 포함된 경우(예: C++) 더티 솔루션은 실패합니다 .
대안은 getfacl
ACL이 없는 파일을 반복적으로 건너뛰는 것 입니다.
getfacl -Rs /your/dir | grep "# file:"
그러면 파일이 나열되고 grep은 파일 이름만 유지합니다.
답변2
sfind . -acl
bosh -c 'find . -acl'
-acl The primary evaluates as true if the file has addi- tional ACLs defined. On platforms that do not support ACLs or where sfind does not yet support ACLs, the pri- mary always evaluates as false. Currently only Solaris, Linux and FreeBSD is supported.
sfind
및 모두 bosh
다음의 일부로 배송됩니다.Schily 도구.
비슷한 것을 얻으려면getfacl
일반적으로 GNU 시스템에서 발견되는 명령, 구축 중에두아르도의 대답, 우리는 다음과 같이 파일 필드(여기서 표현과 as getfacl
로 일부 바이트 값을 인코딩함 )를 디코딩해야 합니다.\ooo
\
\\
getfacl -Rs . | perl -nle '
if (/^# file: (.*)/) {
print $1 =~ s{\\(\\|[0-7]{3})}{
$1 eq "\\" ? "\\" : chr oct $1}ger
}'
find
여기서는 '을 사용할 수 없으므로 해당 파일 목록으로 작업을 수행하려면 -exec
NUL로 구분된 목록을 인쇄해야 합니다.
getfacl -Rs . | perl -nl0e '
if (/^# file: (.*)/) {
print $1 =~ s{\\(\\|[0-7]{3})}{
$1 eq "\\" ? "\\" : chr oct $1}ger
}'
따라서 예를 들어 (zsh) 또는 (bash 4.4+)를 xargs -r0 some-command
사용하여 배열에 파이프하거나 저장할 수 있습니다 .array=( ${(0)"$(cmd)"} )
readarray -td '' < <(cmd)