【发布时间】:2020-01-02 14:06:32
【问题描述】:
我想在文件夹上递归运行chown,但我不想包含名为"ssl.cert.webmintmp.26599" 或"ssl.cert.webmintmp.356849" 的文件,所以我需要用通配符替换末尾的数字。而且该文件之前的文件夹应该是通配符,因为有几个不同的文件夹名称。
我试过跑步:
sudo chown -R user:apache /home/ !({ssl.cert.**,**/ssl.cert.**})
根据我在这个问题上的发现,它不起作用; (How do I exclude a folder when performing file operations i.e. cp, mv, rm and chown etc. in Linux)
当我遇到错误时;
./chowntest.sh: line 2: syntax error near unexpected token `('
./chowntest.sh: line 2: `sudo chown -R user:apache /home/ !({ssl.cert.**,**/ssl.cert.**})'
这可行吗?
【问题讨论】:
-
你考虑过运行
find ... -exec chown ...吗? -
chown -R简单地递归您作为参数传递的目录;没有排除设施。我将支持使用find的建议。 -
错误消息看起来您没有启用
extglob,但无论如何它对chown -R没有帮助。 -
@LuisFelipe。恭喜,您现在除了选择答案之外,还有足够的声望来投票!
-
find命令似乎比chown花费的时间要长得多,这就是为什么我想知道是否可以不使用它的原因。