Bash:使用 == 或“| grep”检查 gzip

问题描述 投票:0回答:2

我有一个简单的问题。我有一个文件,想检查它是否经过 gzip 压缩。我遇到过人们重命名不带 .gz 的文件的情况,因此我使用

file $name
而不是在文件名中查找“.gz”。
file $filname
的输出给出一个长字符串:zip1.gz:gzip压缩数据,是“zip1”,来自Unix,最后修改:Fri Jan 26 11:01:59 2024

我有两个命令似乎都有效。

if file $filename | grep -q gzip

if [[ $(file $filename) == *"gzip"* ]]

首选哪种方式?

我也不知道为什么第一种方法有效。

file $filename
输出一个字符串,对吗?然后该字符串通过管道传输到
grep
的输入。我认为
grep
接受文件作为输入,而不是字符串。

bash grep
2个回答
0
投票

我会做什么:

if file -i "$file" | grep -q 'application/gzip'; then
    [...]

0
投票

尝试:

if gunzip --list "${file}" 2>/dev/null; then
  echo "This is a gzipped file!"
fi
© www.soinside.com 2019 - 2024. All rights reserved.