我正在嘗試創建一個bash 腳本,該腳本能夠執行find 命令來獲取目錄樹中每個文件/目錄的權限和完整路徑,並為每個唯一權限創建一個文件,並將每個完整文件路徑打印到該文件權限檔。然後,將來我可以讀取這些檔案並按照執行腳本時的方式使用它們的權限。
例如:
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 個文件(例如777.txt
和755.txt
),每個文件都有 2 行。
我正在努力解決為每個唯一權限創建文件然後發送完整文件路徑的邏輯。
到目前為止我所擁有的(我懷疑數組是必要的,但我已經通過權限對數組進行了排序,我可以在排序命令上使用 -k 1.2 來忽略 d 標誌):
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"
進制形式列印權限,例如666
第一個的輸出stat
附加到第二個建立的stat
帶有後綴的檔案名稱中.txt
。