我想:
最终,获取/ shared中所有子目录的ACL。
我尝试使用的步骤是:
ls -d -- /shared/*/*/*/ > directory_list
getfacl < directory_list > acl_list
是否有一个不同的命令我可以用于(1)它将递归列出子目录,因为-dr(递归列表目录)似乎不起作用。此外,我不知道有多少级别的子目录。
当我运行第二个命令时,似乎有一些语法错误阻止它运行,但是我已经检查了linux手册页中的语法,它应该是正确的。
有人能指出我正确的方向吗?
由于
答案 0 :(得分:2)
使用find
执行递归列表:
find /shared -type d -print > directory_list
getfacl
期望文件名是命令行参数,它不会读取标准输入。使用xargs
执行此转换:
xargs -d '\n' getfacl < directory_list > acl_list
-d
选项指定分隔符,覆盖空格的默认使用。但是,我相信这是一个GNU扩展,它可能不在xargs
的所有版本中。如果你不能使用它,你就必须写一个循环:
while read -r filename; do
getfacl "$filename"
done < directory_list > acl_list
答案 1 :(得分:1)
我知道你确实要求这个,但从技术上讲你是否需要中间的directory_list?
find /shared -type d -print -exec getfacl "{}" \+ > acl_list
答案 2 :(得分:0)
find
命令可以满足您的需求:
find /shared -type d
-type d
仅将输出限制为目录。