Как найти файл, имя которого имеет пять цифр, подряд, где-то в имени файла?

wget -r -nd -A jpg --accept-regex "https://alwaysSamePart.com/.*.jpg" https://whatever_domain.com
  • -r позволяет рекурсивно проходить через веб-сайт (вы можете указать -l , чтобы ограничить глубину)
  • -nd запрещает создание каталогов
  • -A ограничивает загрузку файлов только изображениями jpg
  • - accept-regex ограничивает изображения только необходимым шаблоном
1
19.01.2019, 18:03
2 ответа

Подстановочные знаки (или подстановочные знаки )могут выполнить это с числовым диапазоном:

ls -d /path/to/directory/*[0-9][0-9][0-9][0-9][0-9]*

Это говорит оболочке искать в /path/to/directory имена файлов, которые начинаются с:

  • *--что-нибудь (или ничего)
  • [0-9]--цифра
  • (еще четыре цифры)
  • *--и заканчивается чем угодно (или ничем)

Затем этот список имен файлов передается в lsдля их перечисления.

В более широком смысле, bash также позволяет использовать классы символов в качестве подстановочных знаков, поэтому, если в вашем языке есть числа, которые не покрываются [0 -9], вы можете использовать:

ls -d *[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]*
5
27.01.2020, 23:18

Я добился этого методом, описанным ниже, и у меня все получилось

find. -maxdepth 1  -type f| sed "s/\.\///g"| awk -F "." '{print $1}'|sed '/^$/d'| awk '/[0-9]/{print $0}'| awk '{print $1,gsub("[0-9]",$1)}'| awk '$2 == 5 {print $1}'
-1
27.01.2020, 23:18

Теги

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