我有一个简单的问题。我有一个文件,想检查它是否经过 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
接受文件作为输入,而不是字符串。
我会做什么:
if file -i "$file" | grep -q 'application/gzip'; then
[...]
尝试:
if gunzip --list "${file}" 2>/dev/null; then
echo "This is a gzipped file!"
fi