Список всех файлов, заканчивающихся несколькими расширениями файлов?

Если я хочу, чтобы файлы, заканчивающиеся на .fas я знаю, что я могу сделать следующее с помощью команды ls :

 ls -l /users/jenna/bio/*.fas 

и в нем перечислены все файлы, заканчивающиеся на .fas . Но как я могу получить файлы, заканчивающиеся на .fas или .pep ?

ls -l /users/jenna/bio/(*.fas | *.pep) , похоже, не работает? Я знаю, что могут быть другие команды, которые могут это сделать, но есть ли способ заставить его работать с ls ?

Спасибо за любую помощь!

3 Solutions collect form web for “Список всех файлов, заканчивающихся несколькими расширениями файлов?”

Используйте это: ls -l /users/jenna/bio/*.{fas,pep}

Или это: find /users/jenna/bio -iname '*.pep' -or -iname '*.fas'

Вещь, которая, скорее всего, будет работать из коробки, – это расширение брекета . Он работает в bash, zsh и ksh.

 ls -l /users/jenna/bio/*.{fas,pep} 

(Нет пробелов вокруг скобок.)

В bash и ksh это отображает ошибку, если одно из расширений не сопоставляется, но в любом случае перечисляет файлы, соответствующие другому расширению. Причина этого заключается в том, что расширение фигурной скобки не является функцией сопоставления подстановочных знаков, но текстовая замена: *.{fas,pep} преобразуется в *.fas *.pep прежде чем оболочка начнет поиск файлов, соответствующих шаблонам. В zsh вы получите сообщение об ошибке, и команда не будет запущена, но есть лучший способ: шаблон «или». Эта ошибка не будет выходить за пределы, если ни одно из расширений не будет соответствовать.

 ls -l /users/jenna/bio/*.(fas|pep) 

Или шаблоны также доступны с другим синтаксисом : @(…|…) ; в bash, этот синтаксис должен быть активирован с помощью shopt -s extglob , а в zsh этот синтаксис необходимо активировать с помощью setopt ksh_glob .

 ls -l /users/jenna/bio/*.@(fas|pep) 

(Некоторые из этих действий могут быть сконфигурированы. Все мои утверждения относятся к конфигурации по умолчанию оболочки, если явно не указано.)

Если вы хотите сканировать рекурсивно без раздражающих ошибок, вы обычно получаете от find или ls (например: « Permission denied », « Not a directory »), который может тормозить скрипты или команды xargs , также команда tree нигде не упоминалась:

 tree -fai / | grep -e ".fas$" -e ".pep$" 

выше я использовал root / , но может быть любым путем:

 tree -fai /users/jenna/bio/ | grep -e ".fas$" -e ".pep$"" 

КСТАТИ

  • «Ls -b» не работает на macOS
  • ls показать только каталог / имя файла и размер
  • Почему вы не можете перечислить файл / каталог относительно .. из каталога символической ссылки (Нет такого файла или каталога)?
  • Можно ли игнорировать скрытые файлы Windows?
  • Что на самом деле выводит «ls -dired-l» или «ls -D -l»?
  • Сравните две записи файлов, чтобы найти идентичные файлы, но игнорировать расширения
  • получить список уникальных файлов
  • `ls \` выходит из сеанса терминала?
  • Команда «ls» застряла, пытаясь перечислить устаревшую точку монтирования. Как вы убиваете / останавливаете его?
  • Как проверить содержимое / dev / sdt?
  • копирование узлов устройства
  • Linux и Unix - лучшая ОС в мире.