我有一个文件列表,我需要从该列表中找到所有图像文件。
例如,如果我的列表包含以下内容:
pidgin.tar.gz
photo01.jpg
picture01
screenshot.gif
invoice.pdf
Run Code Online (Sandbox Code Playgroud)
那么我只想选择:
photo01.jpg
picture01
screenshot.gif
Run Code Online (Sandbox Code Playgroud)
笔记:
feh
无法显示,则不是图像)以下命令列出了list_file
包含图像文件名称的行:
<list_file xargs -d \\n file -i | sed -n 's!: *image/[^ :]*$!!p'
Run Code Online (Sandbox Code Playgroud)
file -i FOO
查看 的前几个字节FOO
以确定其格式并打印一行FOO: image/jpeg
(-i
表示显示 MIME 类型;它特定于 Linux 上的 GNU 文件)。xargs -d \\n
从标准输入读取文件列表(每行一个)并将后续命令应用于它。(这需要在 Linux 上找到的 GNU xargs;在其他系统上,省略-d \\n
,但文件列表不能包含\'"
空格或空格)。sed
命令过滤掉: image/FOO
后缀,以便只显示文件名。它忽略与图像文件不对应的行。