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

Вы лучше работаете с NTFS, у него есть лучшая поддержка на стороне Linux.

Более того, этот вопрос был рассмотрен на нашем форуме здесь и здесь, например.

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

3 ответа

Вам нужна команда 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

] Затем вы можете использовать file или аналогично синтаксическому анализу вывода команды 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
ответ дан 22 May 2018 в 16:44
  • 1
    Я не знаю, как использовать результат. Я хочу, чтобы мой файл не отображал сообщение. – Necula Horaţiu 6 November 2017 в 23:50
  • 2
    Для этого вы можете использовать инструкцию if . Используйте echo, чтобы отправить сообщение, а затем выйти с ненулевым кодом состояния. – Kaz Wolfe 6 November 2017 в 23:52
  • 3
    Я использовал if, как этот: if [file -b --mime-type $ 1 | grep -q iso == 1] echo " is is is is & quot ;; выход 2. Но это доцентная работа – Necula Horaţiu 6 November 2017 в 23:55
  • 4
    Должно быть if [ $(file -b --mime-type wolf1.png | grep -q iso) -eq 1 ]; then echo "isn't iso"; exit 2; fi – derHugo 7 November 2017 в 00:04
  • 5
    @derHugo Нет, это должно быть if file -b --mime-type wolf1.png | grep -q iso; then echo "is iso"; else echo "is not iso"; exit 2; fi – wjandrea 7 November 2017 в 00:49

Вам нужна команда 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

] Затем вы можете использовать file или аналогично синтаксическому анализу вывода команды 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
ответ дан 18 July 2018 в 03:45

Вы хотите, чтобы команда 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 и нажать [F8] (-b) флаги:

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

Вы можете использовать file или похожие для разбора вывода на [F11] команду, а затем прочитать код состояния:

% 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
ответ дан 24 July 2018 в 17:55

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

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