3 回答
TA贡献2041条经验 获得超4个赞
file命令可以确定文件类型:
file my.tar
如果是tar文件,则将输出:
my.tar: POSIX tar archive (GNU)
然后,您可以使用grep检查输出(是否包含tar archive):
file my.tar | grep -q 'tar archive; && echo "I'm tar" || echo "I'm not tar"
如果文件不存在,则文件输出为(退出代码为0):
do-not-exist.txt: cannot open `do-not-exist.txt' (No such file or directory).
您可以使用case语句来处理几种类型的文件。
TA贡献1772条经验 获得超6个赞
我只是看tar是否可以列出文件:
if ! { tar ztf "$file" || tar tf "$file"; } >/dev/null 2>&1; then
echo "$file is not a tar file"
fi
TA贡献1936条经验 获得超6个赞
我通常会根据file命令使用类似这样的构造。
压缩的tarball
$ file somefile1.tar.gz | grep -q 'gzip compressed data' && echo yes || echo no
yes
$ file somefile2.tar.gz | grep -q 'gzip compressed data' && echo yes || echo no
no
压缩包
上面处理gzip压缩的tarball文件,对于未压缩的更改出grep检测到的字符串:
$ file somefile1.tar | grep -q 'POSIX tar archive' && echo yes || echo no
yes
$ file somefile2.tar | grep -q 'POSIX tar archive' && echo yes || echo no
no
- 3 回答
- 0 关注
- 721 浏览
添加回答
举报