【问题标题】:test if all files in directory have correct permissions测试目录中的所有文件是否具有正确的权限
【发布时间】:2018-01-26 17:16:20
【问题描述】:

如何测试目录中的所有文件是否具有正确的权限?使用命令stat --format %a /home/user/dir/* 我可以在多行字符串中获取目录中所有文件的权限。假设我想检查所有文件是否都有权限 0700。

我对单个文件使用if [ "$(stat --format %a ~/file)" != 600 ]; then chmod 0600 ~/file; fi,但是如何测试多个文件?

【问题讨论】:

  • 我建议看一下 GNU find 的选项-perm
  • 如果您只想更改目录内所有文件的权限,则只需使用chmod 600 directory/* 直接更改即可。我不明白您为什么要通过查找文件然后更改其权限来使问题复杂化。

标签: linux bash file permissions


【解决方案1】:

你能试试这个吗?

for i in ~/your_dir/*/*
do
 if [ "$(stat --format %a $i)" != 600 ]; then
  chmod 0600 $i
 fi
done

【讨论】:

  • 是的,这很简单,可以自己想出,不过谢谢
【解决方案2】:

Find 将为您完成所有这些工作

find <directory> ! -perm -664 -exec chmod 0600 '{}' \;

【讨论】:

    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 2012-06-29
    • 2013-07-19
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    相关资源
    最近更新 更多