linux - linux cat 文件,不包括以某个前缀开头的文件
问题描述
我正在尝试对目录中的所有 png 文件进行分类并将它们通过管道传递给 ffmpeg 命令:
cat *.png | ffmpeg
它有效,但我现在想从列表中排除所有以前缀“legend_”开头的 png 文件。我如何实现这一目标?我知道使用 ls 我可以输入:
ls -I legend_* -I *.jpg
我找到了有关 grep、ls 等的信息,但是关于命令 cat 的信息令人困惑,而且似乎没有一个像使用
!(legend_)
! -name legend_
解决方案
您可以使用find
:
find . -name '*.png' ! -name 'legend_*' -exec cat {} \; | ffmpeg
使用 bash,使用该extglob
选项,您可以编写:
shopt -s extglob
ls !(legend_*).png
由于该extglob
选项不符合 POSIX,这意味着它不能保证在 POSIX shell 中工作,我建议使用find
.
推荐阅读
- c - 为函数/方法返回 void*
- python-3.x - 自动设备发现(python 或任何我可以在 raspbian 上运行的东西)
- php - 如何隐藏 PHP 中的 PDO 错误?
- javascript - 如何删除Javascript中的某个空格但不是所有空格
- tesseract - 在 windows 中学习训练文件新字母(用于 c# 应用程序)
- r - 在 R 中的列上应用变异
- reactjs - onClick 事件在我的 React 代码中不起作用
- regex - 无法将模式添加到 xsd 中的 anyURI 字段
- css - 为什么 CSS 模块样式不适用于我的元素 RMWC?
- c++ - SDL:将 BMP 传送到窗口表面黑屏之谜