Bash 脚本为列表/查找命令中的每个唯一权限创建一个文件,并打印该权限的每个目录/文件路径实例

Bash 脚本为列表/查找命令中的每个唯一权限创建一个文件,并打印该权限的每个目录/文件路径实例

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

相关内容