linux - OpenSuse Linux 通过文件名中的字符串查找文件
问题描述
在 Linux OpenSuse 中,我想搜索文件名中包含字符串的文件
它应该搜索的路径: /var/spool/asterisk/monitorDONE
在 monitorDONE 下有子文件夹(MP3、OGG、ORIG、GSM、FTP ...),因此文件位于这些文件夹之一下,但不确定是哪一个
文件类型未定义,因为它可能是 .mp3 .wav .gsm 或任何其他音频文件
文件名是这样的00000000-000000_7857565221_0000.xxx
零是任何数字,xxx 是字母
现在命令应该如何?我在互联网上找到了一些 find 命令的示例,但在这种情况下非常具体,任何人都可以完成此命令以满足搜索条件吗?
find -type f /var/spool/asterisk/monitorDONE
谢谢
解决方案
find /var/spool/asterisk/monitor -type f -name '*-*_*_*.*' -print | \
grep -E '[[:digit:]]+-[[:digit:]]+_[[:digit:]]+_[[:digit:]]+.[[:alpha:]]+' | xargs fgrep -l DONE
Find 在它支持的通配符中有些限制,因此我们通过 grep 管道输出以查找精确的文件名匹配。如果位数是常数,则将“+”替换为“{x}”,其中 x 是位数。通过 grep 过滤后,文件列表作为参数转储到 fgrep,fgrep 输出包含字符串 DONE 的任何文件的名称。可以使用 grep 代替 fgrep,但 fgrep 更快,除非需要正则表达式。例如,如果位数始终相同,则替换
[[:digit:]]+
为[[:digit:]]{8}
如果始终为 8 个数字。[[:digit:]]
相当于[0-9]
。
推荐阅读
- wordpress - 如何使用 wp_get_archives、wp_list_categories 获取所有当前帖子?
- python - 如何在 Python 中更改特定按钮的文本
- html - 在 CSS 网格中居中项目
- javascript - 多个单独文件夹中的 Firebase 函数
- reactjs - 将使用导出作为一个大包大小的结果
- ethereum - 带有payable修饰符的Solidity函数是否允许执行msg.sender.call{}
- dji-sdk - 如何开始为 DJI Matrice 300 RTK 创建应用程序
- html - 具有不同宽度项目的列的 css 响应式网格
- python - 如何在 python 或 jupyter notebook 上安装 libpostal 或地址解析器?
- asp.net-core - 如何使用 IdentityServer 4 正确翻转到新的签名证书?