![]() |
Вопрос по условию проверки наличия файлов по маске в шелле
хочу:
if [ ! -f /abc/de/\*.zip ] then..... это я так пытался проверить, есть ли в фолдере хоть один zip-файл. не работает, хоть тресни. Получается, что в таких выражениях wildcards не применимы? |
Цитата:
Да какой wildcard? У Вас же звездочка экранирована! То есть он проверяет исключительно наличие файла с именем "*.zip"! И вообще, в задаче проверки нескольких файлов, команда test (и ее короткий алиас [) сравнивают числа и строки. То есть в Вашем случае, если глобинг (когда он будет, не как сейчас) будет раскрыт в один единственный файл - то сравнение даст нужный Вам вариант, если оно не раскроется вообще - то будет опять проверено наличие файла "*.zip", если раскроется в больше чем один файл - будет ошибка количества аргументов сравнения. То есть так делать в принципе нельзя. |
Цитата:
Я решил эту проблему вот таким корявым копипастом: if [ "$(ls -A *.zip 2>/dev/null)" ] then ... Мои индийские коллеги делают это же направляя результат ls в файл и считая строчки в этом файле. |
Я бы сделал так:
Код:
if [ $(ls -1A *.php 2>/dev/null | wc -l) -gt 0 ] |
| Часовой пояс GMT +4, время: 07:04. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.