Verifique se um arquivo (passado como um argumento para um script) é do tipo .iso

0

Estou trabalhando em um script que leva 2 argumentos. O primeiro é o caminho para um arquivo iso e o segundo é o nome iso. Como posso verificar se o arquivo é tipo .iso e não um tipo diferente de arquivo?

    
por Necula Horaţiu 06.11.2017 / 20:29

1 resposta

5

Você deseja o comando 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

Dê uma olhada especificamente nos sinalizadores --mime-type e --brief ( -b ):

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

Você pode usar grep ou semelhante para analisar a saída do comando file e em seguida, leia o código de status:

% 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

Se você quiser usar isso em um script (em que $1 é o passado no arquivo, observe a falta de colchetes ):

#!/bin/bash

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

Exemplo:

% ./x.sh ubuntu-16.04.2-desktop-amd64.iso
Is ISO
% ./x.sh wolf1.png 
Is not ISO
    
por Kaz Wolfe 06.11.2017 / 20:36