Answers:
几乎所有的Unix工具都将文件列表作为非选项参数。和往常一样,不同的参数必须用空格隔开:
chown 644 one two three
在第二个示例中,如果您使用的是Bash,
chown -R 644 !(cache)
就足够了。
这种方法需要扩展的模式匹配。如果已禁用,则可以使用
shopt -s extglob
请参阅:Bash参考手册#模式匹配
正则表达式为赢!
使用find是我能想到的最好的方法,除了使用正则表达式之外,该正则表达式可能已经存在于您的特定外壳中或您正在使用的应用程序中。首先,我尝试:
touch one&touch two &touch three&find -name "one|two|three" -exec chown -644 {} \;
但是,您会发现管道在这种情况下不起作用。要学习的另一个可悲的事情是……学习chmod,chown,chgrp等。等
我自己不支持多文件/正则表达式选择/排除... 我找到的解决方案:https : //stackoverflow.com/questions/19111067/regex-match-要么-string-in-linux-find-command
find \( -name one -o -name two -o -name three \) -exec chown -644 {} \;
因此,获胜的正则表达式不是很多,但是至少我们有一种方法可以在一个衬套中将文件列表注入程序的args中。
您会注意到,您需要转义()元字符,并为每个其他名称添加-o参数...
来自我的其他链接和内容,可能会对您的旅行感兴趣:
各种花絮-康恩·本恩和朋友的笔记。-戴夫·霍纳(Dave Horner)的网站
干杯。
-戴夫