我正在尝试更改目录列表的所有权,以便
chown -LR deep:deep deep/list/of/50/subdirectories
chown -LR deep:deep deeps/list/of/50/subdirectories
但是我收到超过10个子目录的错误。我想过编写一个perl脚本,使它与深层和深层相同。我在perl中学习了File :: path模块。但是只有make和rmtree函数。有人可以帮忙解决这个问题。感谢。
答案 0 :(得分:1)
听起来你正在遇到Unix对路径名长度有限制的事实。如果您尝试访问深度嵌套的目录,则路径名将太长。
你可以通过一次几个级别进入每个目录来解决这个问题:
( cd deep/list/of; cd some/more/levels; cd and/a/few/more; ...
chown -LR deep:deep subdirectories )
( cd deeps/list/of; cd some/more/levels; cd and/a/few/more; ...
chown -LR deep:deep subdirectories )
括号是这样的,所有cd
命令都发生在子shell中;当它完成后,你将从相同的顶级目录开始返回原始shell,这样你就可以从那里处理下一个子目录。
路径名大小的默认限制是<limits.h>
:
#define PATH_MAX 4096 /* # chars in a path name including nul */
虽然单个文件系统可能会覆盖它。
答案 1 :(得分:0)
如果你想在Perl中这样做,你必须自己走一些目录,例如File::Find。您可以指定代码是否更改为新目录(因此相对路径更短)。