我想在文件夹上递归运行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/

10-13 05:31