Проверьте, имеет ли файл (передал как аргумент сценарию) .iso тип

Я работаю над сценарием, который берет 2 аргумента. Первым является путь к файлу ISO, и вторым является название ISO. Как я могу проверить, является ли файл типом .iso и не другим типом файла?

0
задан 7 November 2017 в 04:19

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
5
ответ дан 1 November 2019 в 06:37

Другие вопросы по тегам:

Похожие вопросы: