我需要更改除 1 个文件夹之外的所有子文件夹中的文件夹和文件权限。目前,我正在运行几个 find/exec 命令来使其工作。
e.g. find /mystuff/temp/videos -type d -exec chmod 777 {} \;
文件夹结构类似于(具有我需要的必要权限):
mystuff
-> folder1 (ignored)
-> subfolder1 (permissions changed)
-> folder2 (permissions changed)
-> folder3 (permissions changed)
是否可以?如果是,用什么 find
等命令?
答案1
尝试:
find /mystuff/temp/videos -type d ! -name 'folder1' -exec chmod 777 {} +
请注意,您不应该设置 777 权限,这是安全方面的一个大漏洞。
答案2
您可以添加-wholename
带有 not ( !
) 的测试来删除该目录。例如:
find /mystuff/temp/videos ! -wholename 'mystuff/folder' -type d -exec chmod 777 {} \;
从手册页:
-wholename pattern File name matches shell pattern pattern. The metacharacters do not treat '/' or '.' specially; so, for example, find . -wholename './sr*sc' will print an entry for a directory called './src/misc' (if one exists).
*
如果您使用通配符 ( ) 来保护模式免受 shell 的影响,则该模式需要用引号引起来。