繁体   English   中英

如何将源文件夹中的权限复制到目标?

[英]How to copy permissions from source folder into destination?

我有两个包含相同层次结构和文件的包(目录)。 我需要将源包中每个项目的权限复制到位于目标包中的文件中。 我不应该复制文件,只能复制权限。

是否可以使用shell脚本或者我应该努力并编写应用程序来执行此操作?

它不是bash ,但是在OS X中可以使用zsh ,因此您可以尝试以下操作(我使用%作为提示来指示您何时在zsh ; for>是辅助提示)

$ zsh
% for x in source/**/*; do
for> chmod $(stat -f "%p" $x) ${x/^source/dest}
for> done
% exit
$

for循环以递归方式遍历source下的所有文件。 stat -f "%p" $x输出源目录中文件的权限,用作更改相应文件权限的命令的参数(即,在其名称中将“source”替换为“dest” )在目标目录中。

(实际上,该循环也适用于bash 4,但正如您可能已经注意到的那样,OS X仍然附带bash 3.2。)


作为名为foo.zsh的独立脚本:

#!/bin/zsh
for x in source/**/*; do
  chmod $(stat -f "%p" $x) ${x/^source/dest}
done

$ chmod +x foo.zsh
$ ./foo.zsh

或者干脆

$ zsh foo.zsh

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM