bash - 在 bash 中检查文件扩展名的最简单方法?

标签 bash shell unix gzip

<分区>

我有一个 shell 脚本,如果一个文件被压缩(以 .gz 结尾),我需要执行一个命令,如果没有,我需要执行另一个命令。我不太确定如何处理这个问题,以下是我正在寻找的内容的概述:

file=/path/name*

if [ CHECK FOR .gz ]
then echo "this file is zipped"
else echo "this file is not zipped"
fi

最佳答案

你可以用一个简单的正则表达式来做到这一点,在 [[...]] 测试中使用 =~ 运算符:

if [[ $file =~ \.gz$ ]];

如果扩展名是 .tgz,如果您关心它,这不会给您正确的答案。但它很容易修复:

if [[ $file =~ \.t?gz$ ]];

正则表达式周围没有引号是必要且重要的。你可以引用 $file 但没有意义。

使用 file 实用程序可能会更好:

$ file --mime-type something.gz
something.gz: application/x-gzip

类似于:

if file --mime-type "$file" | grep -q gzip$; then
  echo "$file is gzipped"
else
  echo "$file is not gzipped"
fi

关于bash - 在 bash 中检查文件扩展名的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18278990/

相关文章:

linux - 如何访问一些邮件,并打印特定邮件的邮件正文?

bash - 我需要我的脚本来编辑和强制写入只读文件

linux - 持续监控目录/文件以进行错误报告

python - 修改服务器上文件内容的最佳脚本

linux - 将CSV文件中的第一行和第三行转换为Shell脚本中的列

ruby - 检测 IDLE 处理器 ruby​​ 的数量

linux - |在一行的开头 - bash

linux - 如果 TOTAL CPU 小于 1%,则使用 monit 重启 ffmpeg 进程

Java 可执行文件将/转换为句号

ruby-on-rails - Nginx 无法使用 Unicorn 找到 unix 套接字文件