디렉터리 트리에 있는 모든 파일/디렉터리의 권한과 전체 경로를 가져오고 각 고유 권한에 대한 파일을 생성하고 해당 전체 파일 경로를 인쇄하기 위해 find 명령을 수행할 수 있는 bash 스크립트를 만들려고 합니다. 권한 파일. 그런 다음 나중에 이 파일을 읽고 스크립트를 실행했을 때와 같은 방식으로 사용 권한을 부여할 수 있습니다.
예를 들어:
drwxrwxrwx /home/user/testDirectory
-rwxrwxrwx /home/user/testDirectory/testFile
drwxr-xr-x /home/user/testDirectory/directory2
-rwxr-xr-x /home/user/testDirectory/directory2/test2
위의 코드는 각각 2개의 줄을 포함하는 2개의 파일(예: 777.txt
및 )을 생성합니다.755.txt
각 고유 권한에 대한 파일을 생성한 다음 전체 파일 경로를 보내는 논리에 어려움을 겪고 있습니다.
지금까지 내가 가진 것(배열이 필요한지 의심스럽지만 d 플래그를 무시하기 위해 sort 명령에서 -k 1.2를 사용하여 수행할 수 있는 허가에 따라 배열을 정렬하는 작업을 했습니다):
declare -a PERMS
i=0
while read line
do
PERMS[$i]="$line"
(( i++ ))
done < <( find /opt/sas94 -printf ""%M/" "%p/"\n")
답변1
이 시도:
#!/bin/bash
while read file; do
stat -c '%A %n' "$file" >> $(stat -c '%a' "$file").txt
done < <(find "$1")
용법:
./script.sh /path/to/directory
- 첫 번째는
stat -c '%A %n' "$file"
파일에 대한 권한과 경로를 인쇄합니다. 예:-rw-rw-rw- /foo/bar
- 두 번째는
stat -c '%a' "$file"
8진수 형식으로 권한을 인쇄합니다. 예:666
첫 번째 출력은 두 번째 출력 stat
에서 생성된 파일 이름에 접미사 .stat
.txt