Как проверить расширение имени файла в скрипте bash?

Кроме того, если вы работаете в большинстве UNIX & amp; Linux, вы можете временно увеличить размер стека с помощью следующей команды:

ulimit -s unlimited

Но будьте осторожны, память - это ограниченный ресурс и с большой силой приходят большие обязанности:)

142
задан Anthon 14 January 2015 в 09:00
поделиться

4 ответа

Я думаю, что Вы хотите сказать, "Последние четыре символа $file, равного .txt?" Если так, Можно использовать следующее:

if [ ${file: -4} == ".txt" ]

Примечание, что пространство между file: и -4 требуется как ':-' модификатор, означает что-то другое.

207
ответ дан Paul Stephenson 14 January 2015 в 09:00
поделиться
  • 1
    Хорошо, я вижу, что другие намекнули Вам, что можно изменить значение прежде, чем отправить его основному конструктору. – Ed S. 30 October 2009 в 18:57

Вы просто не можете быть уверены в системе Unix, что .txt файл действительно является текстовым файлом. Ваш лучший выбор состоит в том, чтобы использовать "файл". Возможно, попытайтесь использовать:

file -ib "$file"

Тогда можно использовать список типов MIME, чтобы соответствовать против или проанализировать первую часть MIME, где Вы получаете материал как "текст", "приложение", и т.д.

25
ответ дан Eldelshell 14 January 2015 в 09:00
поделиться

Можно использовать команду "файла", если Вы на самом деле хотите узнать информацию о файле, а не полагаться на расширения.

, Если Вы чувствуете себя довольными использованием расширения, можно использовать grep, чтобы видеть, соответствует ли это.

24
ответ дан Adam Peck 14 January 2015 в 09:00
поделиться

Сделайте

if [ "$file" == "*.txt" ]

как это:

if [[ $file == *.txt ]]

таким образом, удвойте скобки и никакие кавычки.

правая сторона == является шаблоном оболочки. При необходимости в регулярном выражении используйте =~ тогда.

231
ответ дан 14 January 2015 в 09:00
поделиться
Другие вопросы по тегам:

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