如何在文件名中使用通配符从 chown 递归中排除文件?

How to exclude files from chown recursive using wildcard in file name?

我想 运行 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 '{}' \;