2012-11-08 3 views
1

내가이 변수에 저장이 명령이이 출력을 생성bash는 주어진 파일의 상위 폴더에 대한 권한을 확인하는 방법

filelist=$(find $dir_name -size $sizeFileTmp -printf '%M %n %u %g %-s %Tb %Td %Tk:%TM %P\n') 
echo "$filelist" | sort -rnk5 | awk '{printf "%s %s %s %s %6s %3s %2s %5s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9}' 

:

-rwx------ 1 juanpa juanpa 135838 Nov 04 20:47 sample.dir2/testdir2/subdir2/phones 
-rwx------ 1 juanpa juanpa 135838 Nov 04 20:47 sample.dir2/testdir2/phones 
-rwx------ 1 juanpa juanpa 135838 Nov 04 20:47 sample.dir1/testdir1/subdir1/phones 
-rwx------ 1 juanpa juanpa 135838 Nov 04 20:47 sample.dir1/testdir1/phones 
-rwx------ 1 juanpa juanpa 135838 Nov 04 20:47 sample.dir1/.phones 
-rwx------ 1 juanpa juanpa 26615 Nov 04 20:47 sample.dir2/vimtutor 
-rwx------ 1 juanpa juanpa 26615 Nov 04 20:47 sample.dir2/testdir2/vimtutor 
-rwx------ 1 juanpa juanpa 26615 Nov 04 20:47 sample.dir2/testdir2/subdir2/vimtutor 
-rwx------ 1 juanpa juanpa 26615 Nov 04 20:47 sample.dir1/vimtutor 
-rwx------ 1 juanpa juanpa 26615 Nov 04 20:47 sample.dir1/testdir1/vimtutor 
-rwx------ 1 juanpa juanpa 26615 Nov 04 20:47 sample.dir1/testdir1/subdir1/vimtutor 
-rwx------ 1 juanpa juanpa 25557 Nov 04 20:47 sample.dir2/testdir2/subdir2/cdlist 
-rwx------ 1 juanpa juanpa 25557 Nov 04 20:47 sample.dir2/testdir2/cdlist 
-rwx------ 1 juanpa juanpa 25557 Nov 04 20:47 sample.dir2/cdlist 
-rwx------ 1 juanpa juanpa 25557 Nov 04 20:47 sample.dir1/testdir1/subdir1/cdlist 
-rwx------ 1 juanpa juanpa 25557 Nov 04 20:47 sample.dir1/testdir1/cdlist 
-rwx------ 1 juanpa juanpa 25557 Nov 04 20:47 sample.dir1/cdlist 
-rwx------ 1 juanpa juanpa 20558 Nov 04 20:47 sample.dir2/testdir2/subdir2/sample.txt 
-rwx------ 1 juanpa juanpa 20558 Nov 04 20:47 sample.dir2/testdir2/sample.txt 
-rwx------ 1 juanpa juanpa 20558 Nov 04 20:47 sample.dir2/sample.txt 
-rwx------ 1 juanpa juanpa 20558 Nov 04 20:47 sample.dir1/testdir1/subdir1/sample.txt 
-rwx------ 1 juanpa juanpa 20558 Nov 04 20:47 sample.dir1/testdir1/sample.txt 
-rwx------ 1 juanpa juanpa 20558 Nov 04 20:47 sample.dir1/sample.txt 

내 질문은 어떻게해야입니다 이 파일들이 들어있는 폴더에 쓰기 및 실행 권한이 없는지 확인한 다음 해당 줄을 강조 표시합니까? 다음 명령은 읽기/쓰기 권한이없는 디렉토리 $에서 디렉토리를 식별 할 수 있지만 목록을 생성 할 -size 술어를 사용하여 제외되었을 수 있습니다 폴더에보고를 제한하지 않습니다

+0

"마지막 폴더"라고 생각하는 것이 무엇인지 명확히 설명하십시오. – kbulgrien

+0

내 질문에 대한 의견을 보내 주셔서 감사합니다. 지금은 더 나은가요? –

+0

당신의 필요에 따라, 만약 그냥 빠른 검사,'echo "$ {filelist}"| grep -v '^ .r.x''는 최소한'-r-x ------'가 아닌 파일을 보여줍니다. 행운을 빕니다. – shellter

답변

1

사전에

감사 :

find $dir -type d ! \(-readable -a -writable \) -printf '%p\n' 

다음은 다소 복잡한 것처럼 보이지만 "!"앞에 붙습니다. 폴더에 대한 읽기 권한이없는 경우 파일 목록을 얻는 방법을 묻지 만 사용자가 읽고 쓸 수있는 디렉토리가없는 항목을 "강조 표시"합니다.

filelist=$(find $dir_name -size $sizeFileTmp -printf '%M %n %u %g %-s %Tb %Td %Tk:%TM %P\n') 
if [ -z "${filelist}" ]; 
then 
    echo "No files." 
else 
    echo "$filelist" | \ 
    sort -rnk5 | \ 
    awk \ 
    '{ DIR = gensub(/[/][^/]*$/, "", "", $9); 
     CMD = "stat -c +%A " DIR; 
     CMD | getline PERMS; 
     if (PERMS !~ /^..rw/) 
     { 
     printf("!"); 
     } 
     printf("%s %s %s %s %6s %3s %2s %5s %s\n", \ 
     $1, $2, $3, $4, $5, $6, $7, $8, $9); 
    }' - 
fi 

이 옵션은 디렉토리의 모든 레벨을 검사하지 않고 리프 폴더 만 검사합니다.

stat을 사용하려는 F. Hauri에게 감사드립니다.

+0

고마워 kbulgrien,하지만 버그가있다, 그리고 그것을 해결하는 방법을 모르겠어요 여기에 출력 [링크] (http : // dl.dropbox.com/u/38105514/output.txt) –

+0

여기서 스크립트를 매우 철저히 테스트했는데 실제로는 쓰기 사용 권한이없는 디렉토리를 감지합니다.하지만 내가 말했듯이 읽기 권한 없이는 폴더를 감지하지 못할 수도 있습니다. 제공 한 찾기 기능은 읽기 권한이없는 폴더의 파일을 찾을 수 없습니다. 이 네트워크에서 차단되어있어 귀하의 링크에 액세스 할 수 없습니다. – kbulgrien

+0

나는이 포스트에서 스크립트를 붙여 넣기 만하고 다시 테스트했다. 작동했지만 실제로 출력 할 때 실제로 처리 할 파일이 있는지 확인하기 위해 검사가 추가되었습니다! dir 또는 sizeFileTmp가 설정되지 않은 경우 – kbulgrien

관련 문제