检查文件(作为参数传递给脚本)是否为 .iso 类型

检查文件(作为参数传递给脚本)是否为 .iso 类型

我正在编写一个带有 2 个参数的脚本。第一个是 iso 文件的路径,第二个是 iso 名称。如何检查文件是否为 .iso 类型而不是其他类型的文件?

答案1

你想要file命令:

% file ubuntu-16.04.2-desktop-amd64.iso 
ubuntu-16.04.2-desktop-amd64.iso: DOS/MBR boot sector ISO 9660 CD-ROM filesystem data (DOS/MBR boot sector) 'Ubuntu 16.04.2 LTS amd64' (bootable); partition 2 : ID=0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 14432, 4864 sectors

特别看一下--mime-type--brief-b)标志:

% file -b --mime-type ubuntu-16.04.2-desktop-amd64.iso
application/x-iso9660-image

然后您可以使用grep或者类似地解析命令的输出file,然后读取状态码:

% file -b --mime-type ubuntu-16.04.2-desktop-amd64.iso | grep -q iso; echo $?
0
% file -b --mime-type wolf1.png | grep -q iso; echo $?
1

如果你想在脚本中使用它($1传入的文件在哪里,注意缺少括号):

#!/bin/bash

if file -b --mime-type $1 | grep -q iso; then
    echo "Is ISO"
else
    echo "Is not ISO"
fi

例子:

% ./x.sh ubuntu-16.04.2-desktop-amd64.iso
Is ISO
% ./x.sh wolf1.png 
Is not ISO

相关内容