我想在文件夹上递归运行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.**})'
这可行吗?
最佳答案
chown -R
不会对传入的内容进行任何解释。shell会解释使用!(...)
之类的任何尝试。如果您想在递归中支持奇特的逻辑,请使用类似find
的代码:
find /home ! -name 'ssl.cert.*' -exec chown user:apache '{}' \;
关于linux - 如何使用文件名中的通配符从chown递归中排除文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59564704/