Bash 脚本:递归更改文件权限

     2023-03-14     10

关键词:

【中文标题】Bash 脚本:递归更改文件权限【英文标题】:Bash Script: Changing file permissions recursively 【发布时间】:2017-10-23 01:23:03 【问题描述】:

我需要一个 Bash 脚本来更改目录和所有子目录中所有文件的文件权限。它的行为应该是这样的:

for each file in directory (and subdirectories)
   if i am the owner of the file
      if it is a directory
         chmod 770 file
      else
         chmod 660 file

我想这不是一项艰巨的任务,但我在 Bash 脚本方面不是很有经验。感谢您的帮助! :D

【问题讨论】:

【参考方案1】:

您可以通过两次调用 find 命令来完成此操作,其中 -user 选项按用户过滤,-type 选项按文件类型过滤:

find . -user "$USER" -type d -exec echo chmod 770  +
find . -user "$USER" -not -type d -exec echo chmod 660  +

测试后删除echo,实际更改权限。

【讨论】:

【参考方案2】:

find 在这里很有帮助:它递归地查找满足特定条件(在本例中为所有者)的文件和/或目录。另一个技巧是为chmod 使用X(而不是x)标志,这使得目录可执行但不是常规文件。通过xargs 将其放在一起:

find . -user $(whoami) | xargs chmod ug=Xo=

我没有对此进行测试,它可能有点错误。我建议先测试一下:)

【讨论】:

【参考方案3】:

使用find:

find topdirectory -user "$USER" \( -type f -exec chmod 660  + \) -o \( -type f -exec chmod 770  + \)

【讨论】:

shreact是一个linuxbash脚本,用于递归监视文件修改并在发生更改时执行bash命令(代码片段)

查看详情

Bash 脚本 - 如何设置创建新文件的组?

】Bash脚本-如何设置创建新文件的组?【英文标题】:BashScripting-Howtosetthegroupthatnewfileswillbecreatedwith?【发布时间】:2010-11-2205:06:05【问题描述】:我正在编写一个bashshell脚本,我想更改创建新文件的默认组。我知道您使用umask更... 查看详情

在 Bash 中递归更改文件扩展名

】在Bash中递归更改文件扩展名【英文标题】:RecursivelychangefileextensionsinBash【发布时间】:2014-03-2523:33:37【问题描述】:我想递归地遍历一个目录并将某个扩展名的所有文件的扩展名更改为.t1到.t2。执行此操作的bash命令是什么?... 查看详情

用于递归重命名文件夹的 Bash 脚本

】用于递归重命名文件夹的Bash脚本【英文标题】:Bashscripttorenamefoldersrecursively【发布时间】:2011-12-2507:27:30【问题描述】:我想重命名我的所有文件夹和这些文件夹中的文件夹,以便文件夹名称中的所有下划线都替换为空格。... 查看详情

为啥直接运行的 bash 脚本不需要用户权限,但运行脚本的 .app 文件需要用户权限?

】为啥直接运行的bash脚本不需要用户权限,但运行脚本的.app文件需要用户权限?【英文标题】:Whyabashscriptrandirectlydoesn\'tneeduserpermissions,buta.appfilerunningthescriptneedsthem?为什么直接运行的bash脚本不需要用户权限,但运行脚本的.app... 查看详情

Bash 脚本无法识别现有文件

】Bash脚本无法识别现有文件【英文标题】:Bashscriptnotrecognizingexistingfile【发布时间】:2021-01-0114:28:12【问题描述】:我必须编写一个简单的bash脚本,它编译多个sql脚本,其中可以包含对其他sql脚本的递归引用OracleSQLPlusconvention... 查看详情

按文件和目录递归更改权限

Inordertoavoidmakefilesexecutable,youcanusethesetochmodfilesanddirectoriesdifferently.forfolders(directories):find.-typed-execchmod777{}; forfiles:find.-typef-execchmod666{}; 查看详情

用于在没有 -R 的 FTP 服务器上列出递归目录的 Bash 脚本

】用于在没有-R的FTP服务器上列出递归目录的Bash脚本【英文标题】:BashscriptforrecursivedirectorylistingonFTPserverwithout-R【发布时间】:2015-05-0700:16:25【问题描述】:FTP服务器上有多个带有子文件夹和图像文件的文件夹。-R被禁用。我需... 查看详情

如何使用 bash 脚本更改多个文件的扩展名?

】如何使用bash脚本更改多个文件的扩展名?【英文标题】:howtochangetheextensionofmultiplefilesusingbashscript?【发布时间】:2013-03-2714:51:28【问题描述】:我对linux的使用非常陌生,也许这是我第一次使用,所以我希望能提供一些详细的... 查看详情

sh递归更改文件夹的访问权限(代码片段)

查看详情

如何让shell脚本变成可执行文件

参考技术A在本教程中介绍创建bash脚本并使用chmod命令使脚本可执行,无需脚本前面加上sh或bash命令就可以运行它。创建脚本文件第一步是使用以下命令创建一个扩展名为.sh的新文件:[root@localhost~]#touchhello_script.sh写一个简单的脚... 查看详情

sh脚本bash-更改.yml文件中的值(代码片段)

查看详情

在mac中使用shell命令递归更改文件和文件夹的权限

】在mac中使用shell命令递归更改文件和文件夹的权限【英文标题】:changingpermissionforfilesandfolderrecursivelyusingshellcommandinmac【发布时间】:2011-04-1913:41:30【问题描述】:在Linux中我们可以使用下面的命令递归地改变文件和文件夹的权... 查看详情

使用 bash 脚本编辑 .tf 变量文件

】使用bash脚本编辑.tf变量文件【英文标题】:edit.tfvariablefilesusingbashscript【发布时间】:2021-03-2318:59:20【问题描述】:我在.tf文件中有一个很大的变量文件,我想使用bash脚本更改值。就像我的文件有很多这样的块,我想逐步更... 查看详情

在 bash 脚本中更改网络 ip 从 NFS 安装的文件夹开始

】在bash脚本中更改网络ip从NFS安装的文件夹开始【英文标题】:ChangingnetworkipinabashscriptstartedfromaNFS-mountedfolder【发布时间】:2012-08-2716:29:41【问题描述】:我编写了一个简单的Bash脚本来更改Linux主机的网络地址:#!/bin/shREMOTE_HOST=1... 查看详情

仅递归更改文件/文件夹的文件权限[*nix]

ProblemYouwanttorecursivelychangeallofthefilepermissionsonlyonfolders&subfoldersinadirectory,butnotthefiles(orvice-versa:youwanttochangethepermissionsonfilesonly,notfolders).#Thiscommandwillrecursivelysearchyourcurrentdirectoryandchmodalldirectories&sub-directoriesonly:find.-typed-execchmod7... 查看详情

为啥linux的source命令在linux的脚本中没有作用我使用了#!/bin/sh以及#!/bin/bash都不好用

...,功能和./一样例:source1.sh./1.sh不过要更改1.sh的权限在shell脚本中也可以使用,例如#/bin/bash#filename:1.shechook!source1.sh这时运行1.sh时就会无限调用1.sh输出为ok!无限循环,不过同样要更改1.sh文件的权限估计您source命令不好用的原因就是可... 查看详情

如何在bash中递归复制所有目录和文件?

...ecursive?【发布时间】:2011-12-2417:24:23【问题描述】:我有脚本:find./SourceFolder/-maxdepth4-execcp-R\'\'./DestFolder/\\;SourceDir还包含子文件夹。问题在于,DestFolder不仅是所有树,而且在上一级所有其他级别和 查看详情