Перечислите все файлы, заканчивающиеся на 10 или 11 или 12

Чтобы перечислить все файлы, заканчивающиеся на 10 или 11 или 12, я попытался использовать ls *[10-12] и ls *[10,11,12] но они не работают. Я не знаю почему. Может кто-нибудь мне помочь?

4 Solutions collect form web for “Перечислите все файлы, заканчивающиеся на 10 или 11 или 12”

[...] соответствует одному символу, если он указан в указанном наборе.

[10-12] означает либо символ 1 либо символы от 0 до 1 или символ 2 так же, как [102] или [0-2] .

[10,11,12] означает либо 1 , 0 [10,11,12] … … так же, как [,0-2] .

Здесь вы хотите:

 ls -d -- *1[0-2] 

То есть (не скрытые) имена файлов, которые заканчиваются на 1, за которым следует любой из 0 , 1 или 2 символов.

Теперь остерегайтесь, что он также соответствует foo110 или foo112345612 .

Если вы этого не хотите, тогда вам понадобится что-то вроде:

 ls -d -- *[!0-9]1[0-2] 1[0-2] 

Это, однако, не соответствовало бы foo010

Если из foo10 , foo00010 , foo110 вы хотите, чтобы foo10 и foo00010 соответствовали, то с ksh или bash -O extglob или zsh -o kshglob :

 ls -d -- !(*[0-9])*(0)1[0-2] 

Обратите внимание, что, за исключением zsh , если какой-либо из этих шаблонов не соответствует, шаблоны будут передаваться как-есть в ls , поэтому вы можете лишить список нежелательных файлов, если есть такие файлы. С помощью bash вы можете установить параметр failglob чтобы обойти это.

zsh – единственная оболочка, которая имеет оператор glob для соответствия диапазонам чисел.

 ls -d -- *<10-12> 

будет соответствовать файлам, заканчивающимся числом от 10 до 12. Он также будет соответствовать foo110 так как foo1 следует за 10 . Вы могли бы сделать (с extendedglob ):

 ls -d -- (^*[0-9])<10-12> 

хоть.

zsh также является оболочкой, которая ввела тип расширения {10..12} расширения скобок (скопировано ksh93 и bash несколько лет спустя).

Однако, подобно эквиваленту {10,11,12} , который не является глобированием. Это форма расширения, которая выполняется перед глобализацией.

 ls -d -- *{10..12} 

сначала расширяется до:

 ls -d -- *10 *11 *12 

Если какой-либо из этих трех глобусов терпит неудачу, команда отменяется в zshbash -O failglob ).

Это должно работать:

 ls -d -- *1[0-2] 

Помните, что [] представляет набор символов, а в случае чисел он может перейти от [0-9]

Попробуй это :

 ls *{10,11,12} 

или

 ls -l *{10,11,12} 

(не может показывать скрытые файлы)

ls *@(10|11|12) – это то, что вы ищете.

Для этого необходимо, чтобы extglob с помощью shopt , т. shopt -s extglob . Кроме того, вы можете добавить эту строку в ~/.bashrc чтобы окончательно включить ее.

Для получения дополнительной информации о том, почему это работает, см. Официальную страницу руководства Bash по сопоставлению с образцом .

  • Переместить каждый файл, который не является каталогом
  • как перебирать файлы в каталоге, исключая скрытые файлы
  • Создать файл с использованием шаблона в абсолютном пути
  • Как найти все файлы, кроме указанного файла
  • Скопировать файлы .txt в определенную директорию
  • Есть ли причина использовать несколько вопросительных знаков вместо звездочки в расширении имени файла?
  • Как скопировать несколько файлов, но сохранить их расширения одинаково?
  • Выполнить команду во всех подпапках
  • Interesting Posts

    Как я могу понять, почему устройство HID unikey не распознается программным обеспечением, требующим его?

    cat / dev / null> file.log не обрезает большой файл в Дарвине

    Не удается установить AP с hostapd на RPi

    touch: не может касаться «теста»: разрешение отклонено

    Удерживать и отпускать задания печати CUPS из командной строки

    Последняя команда в цикле успешно завершена, но статус выхода равен 1

    Как сохранить работу службы VNC после перезагрузки (RHEL 6)?

    Nginx перенаправляет все домены на один веб-сайт

    Установка Kali Linux

    На заблокированном экране, как я могу автоматически отключить мониторы, если они проснутся?

    Разница между длительным процессом и демоном?

    Куда поместить модули для разных конфигураций той же версии ядра?

    Блокировать определенный IP-адрес от доступа к шлюзу

    Уточнение, пожалуйста, на медленном диске трюк

    Выполнение `ls` с` –color = auto | always` требует разрешения на выполнение

    Linux и Unix - лучшая ОС в мире.