linux - 如何使用文件名中的通配符从 chown 递归中排除文件?
问题描述
我想chown
在一个文件夹上递归运行,但我不想包含名为"ssl.cert.webmintmp.26599"
or的文件"ssl.cert.webmintmp.356849"
,所以我需要用通配符替换末尾的数字。而且该文件之前的文件夹应该是通配符,因为有几个不同的文件夹名称。
我试过运行:
sudo chown -R user:apache /home/ !({ssl.cert.**,**/ssl.cert.**})
根据我在这个问题上的发现,它不起作用;(在Linux中执行文件操作即cp、mv、rm和chown等时如何排除文件夹)
当我遇到错误时;
./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 '{}' \;
推荐阅读
- typescript - 如何为 loopback4 添加自签名 ssl 证书?
- python - 基于唯一列值进行比较并根据条件设置标志
- docker - Springboot 应用程序的持续集成、交付和部署
- javascript - exponentialRampToValueAtTime 不能防止在 firefox 中破解
- sql - regexp_like 镜像包含 near
- java - 春季启动日志记录到文件不起作用
- java - 如何使用 Zstd-jni 和字节缓冲区解压缩大文件
- python - 在python3中强调用户输入
- audio - 除了 FFT 之外还有其他方法来实现吉他调音器吗?
- python - PySpark read.csv - inferSchema 和模式选项之间的交互