首页 > 解决方案 > linux cat 文件,不包括以某个前缀开头的文件

问题描述

我正在尝试对目录中的所有 png 文件进行分类并将它们通过管道传递给 ffmpeg 命令:

cat *.png | ffmpeg

它有效,但我现在想从列表中排除所有以前缀“legend_”开头的 png 文件。我如何实现这一目标?我知道使用 ls 我可以输入:

ls -I legend_* -I *.jpg

我找到了有关 grep、ls 等的信息,但是关于命令 cat 的信息令人困惑,而且似乎没有一个像使用

!(legend_)
! -name legend_

标签: linuxcat

解决方案


您可以使用find

find . -name '*.png' ! -name 'legend_*' -exec cat {} \; | ffmpeg

使用 bash,使用该extglob选项,您可以编写:

shopt -s extglob
ls !(legend_*).png

由于该extglob选项不符合 POSIX,这意味着它不能保证在 POSIX shell 中工作,我建议使用find.


推荐阅读