Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何提高更改文件和文件夹权限的性能?_Linux_Ubuntu_Permissions_Find_Chmod - Fatal编程技术网

Linux 如何提高更改文件和文件夹权限的性能?

Linux 如何提高更改文件和文件夹权限的性能?,linux,ubuntu,permissions,find,chmod,Linux,Ubuntu,Permissions,Find,Chmod,我将我的工作项目权限串联设置为: 755适用于所有目录 644用于所有文件 我通过运行“下一步”命令来执行此操作: $ find /path/to/project -type d -exec chmod 0755 {}; $ find /path/to/project -type f -exec chmod 0644 {}; 它工作正常,但有点慢,尤其是在虚拟机上 我能否以任何其他方式改进此任务的性能?参考-[ 1.此处消耗的大部分时间用于为每个条目加载chmod进程。为了避免这种情况,

我将我的工作项目权限串联设置为:

  • 755适用于所有目录
  • 644用于所有文件
我通过运行“下一步”命令来执行此操作:

$ find /path/to/project -type d -exec chmod 0755 {};

$ find /path/to/project -type f -exec chmod 0644 {};
它工作正常,但有点慢,尤其是在虚拟机上


我能否以任何其他方式改进此任务的性能?

参考-[

1.此处消耗的大部分时间用于为每个条目加载chmod进程。为了避免这种情况,请使用xargs-

     find /path/to/project -type d -print0 | xargs -0 chmod 755 
     find /path/to/project -type f -print0 | xargs -0 chmod 644

2.幸运的是,您可以选择不使用
find
,这会使查找速度更快。参考链接中的第二个答案解释了如何根据您的需要编写chmod命令[

1.此处消耗的大部分时间用于为每个条目加载chmod进程。为了避免这种情况,请使用xargs-

     find /path/to/project -type d -print0 | xargs -0 chmod 755 
     find /path/to/project -type f -print0 | xargs -0 chmod 644
2.幸运的是,您可以选择不使用
find
,这会使查找速度更快。参考链接中的第二个答案解释了如何根据您的需要编写chmod命令

find /path/to/project -type d -exec chmod 0755 {} +
这会将尽可能多的参数分组到
chmod

也可以考虑使用<代码> CHMOD-R ,然后再触摸目录。

你可以做

find /path/to/project -type d -exec chmod 0755 {} +
这会将尽可能多的参数分组到
chmod


也可以考虑使用<代码> CHMOD-R ,然后再触摸目录。

可以直接使用命令:

其中
a-x+x
-删除目录树中所有文件的执行权限(即递归),同时允许目录浏览

构造
a-x+x
删除任何文件和目录的所有(
a
,即用户、组和其他)的执行位(
-x
),然后将其(
+x
)添加到所有目录(以及可执行文件,但由于前面的
-x
)中。
以类似的方式
go+r-w
向group和其他(
go
)添加读取权限(
+r
)并删除写入权限(
-w
)。

您可以直接使用以下命令:

其中
a-x+x
-删除目录树中所有文件的执行权限(即递归),同时允许目录浏览

构造
a-x+x
删除任何文件和目录的所有(
a
,即用户、组和其他)的执行位(
-x
),然后将其(
+x
)添加到所有目录(以及可执行文件,但由于前面的
-x
)中。
以类似的方式,
go+r-w
向group和其他人(
go
)添加读取权限(
+r
)并删除写入权限(
-w
)。

谢谢!您的参考链接对我非常有用!您的参考链接对我非常有用。
chmod-r
设置两者的权限(文件和目录)而不是单独的文件/目录,因此它将不正确地更改权限。最后如何处理
+
-这是一个有趣的想法,谢谢!我没有说
chmod-R
。不过,使用
chmod-R
进行完全扫描,然后使用
find-typed-exec chmod 755{}进行dir+
会更快。是的,你说得对,我首先不明白你的意思我假设
chmod-R
同时设置权限(文件和目录)而不是单独的文件/目录,因此它将错误地更改权限。最后如何处理
+
-这是一个有趣的想法,谢谢!我没有说关于
chmod-R
。不过,使用
chmod-R
进行完全扫描,然后只使用
find-type d-exec chmod 755{}进行dir+
会更快。是的,你是对的,我首先不明白你的意思。W,很酷,非常感谢!你能解释一下做什么
a-x+x
选项吗?我添加了一些注释,以防它们对其他人有用。哇,很酷,非常感谢!你能解释一下做什么
a-x+x
选项吗?我已经添加了一些评论,以防对其他人有用。