我正在尝试创建一个 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
。