Linux Shell 脚本更改文件模式

标签 linux shell unix

我对 shell 脚本完全陌生。我知道如何更改单个文件的模式。

但是,我需要满足以下要求,并且我的操作系统是red hat enterprise linux

  1. 查找目录中所有具有 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/

    相关文章:

    linux - 无法将 2 个 Linux 变量连接成 1 个

    c++ - 如何修复这个简单的 Makefile 错误?

    shell - 变量的赋值会打印在 zsh 脚本的 stdout 上

    linux - 如何从配置单元终端中运行 hql 文件?

    linux - 如何计算 Shell 中的累积值?

    java - 在kali linux中设置PATH来运行Java程序

    windows - 免驱动程序支持哪些 USB 类?

    linux - 从 Linux 机器发送信号/文本到窗口中的 Labview

    C - 系统调用 - N 个子进程的数组分区 -

    c - 如何将管道中前一个程序的输出正确发送到下一个程序?