我对 shell 脚本完全陌生。我知道如何更改单个文件的模式。
但是,我需要满足以下要求,并且我的操作系统是red hat enterprise linux
- 查找目录中所有具有 640 模式的文件,然后将其更改为 644。
同样,我有 10 个目录,我需要递归查找所有目录中的所有文件并将模式更改为 644。
- 稍后发送包含状态已更改的文件名的电子邮件。
期待您的帮助来完成此要求。
最佳答案
一些帮助您前进的研究要点。
find
命令可用于查找给定点下具有不同属性的文件。- 您可以将其与
-type
一起使用来选择特定文件类型(常规文件、目录等)。 - 您可以将其与
-maxdepth
一起使用来限制它沿着树的深度。 - 您可以将其与
-perm
一起使用,以仅选择具有特定权限的文件。 - 您可以将其与
-print
一起使用来输出文件名,包括将它们捕获到文本文件中以便稍后邮寄(使用mailx
等工具)。 - 您可以将其与
-exec
结合使用,对每个符合条件的文件执行任意命令。 chmod
是更改权限的命令。
例如,以下命令将查找当前目录(无子目录)中所有具有 640
权限且格式为 *.dat
的常规文件,然后将所有这些权限更改为 644
:
find . -type f -perm 640 -name '*.dat' -maxdepth 1 -exec chmod 644 {} ';'
所有这些选项以及更多选项都可以在 find
的联机帮助页中使用以下命令找到:
man find
或者寻找一些好的解释,例如 GNU find documentation .
但是,find
并不是一个适合胆小的人的工具,它会捕获每一个机会咬你。在获得所需内容之前,请至少再问另外十个问题:-)
关于Linux Shell 脚本更改文件模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27632097/