Linux 如何使用文件名中的通配符从chown recursive中排除文件?
我想在文件夹上递归运行Linux 如何使用文件名中的通配符从chown recursive中排除文件?,linux,bash,centos7,rhel7,Linux,Bash,Centos7,Rhel7,我想在文件夹上递归运行chown,但我不想包含名为“ssl.cert.webmintmp.26599”或“ssl.cert.webmintmp.356849”,因此我需要用通配符替换结尾的数字。而且该文件之前的文件夹应该是通配符,因为有几个不同的文件夹名称 我试过跑步: sudo chown -R user:apache /home/ !({ssl.cert.**,**/ssl.cert.**}) 根据我在这个问题上的发现,这是行不通的;() 当我犯错误时 ./chowntest.sh: li
chown
,但我不想包含名为“ssl.cert.webmintmp.26599”
或“ssl.cert.webmintmp.356849”
,因此我需要用通配符替换结尾的数字。而且该文件之前的文件夹应该是通配符,因为有几个不同的文件夹名称
我试过跑步:
sudo chown -R user:apache /home/ !({ssl.cert.**,**/ssl.cert.**})
根据我在这个问题上的发现,这是行不通的;()
当我犯错误时
./chowntest.sh: line 2: syntax error near unexpected token `('
./chowntest.sh: line 2: `sudo chown -R user:apache /home/ !({ssl.cert.**,**/ssl.cert.**})'
这可行吗?
chown-R
不会对您传入的内容执行任何解释。任何使用之类的东西的尝试!(…)
由shell解释。如果希望在递归中支持奇特的逻辑,请使用类似于find
:
find /home ! -name 'ssl.cert.*' -exec chown user:apache '{}' \;
您是否考虑过运行
find-exec chown…
?chown-R
简单地递归作为参数传递的directori;没有排除设施。我支持使用find
代替的建议。错误消息看起来好像您没有启用extglob
,但它对chown-R
没有任何帮助。@LuisFelipe。恭喜你,除了选择答案,你现在已经有足够的声望去投票了!find
命令似乎比chown
命令花费的时间要长得多,这就是为什么我想知道是否可以不用它。