Список файлов, которые не начинаются с определенного префикса

Мне нужно перечислять только файлы в каталоге, которые НЕ начинаются с qc_dl , qc_dt или qd_df , но также и заканчиваются на .sas .

Я могу перечислить файлы, которые не начинаются с «qc_dl»:

 ls -I "qc_dl*" 

Но тогда я не знаю, как выбрать только программы SAS из результирующего списка.

Кроме того, я могу выбрать все файлы SAS, начинающиеся с «qc_dl», «qc_dt» или «qd_df», следующим образом:

 ls qc_d{l,t,f}*.sas 

Однако я не могу объединить две команды, чтобы отображать только SAS-файлы, которые НЕ начинаются с qc_dl/t/f .

3 Solutions collect form web for “Список файлов, которые не начинаются с определенного префикса”

Предполагая, что имена файлов не содержат символов новой строки и не начинаются с . , это должно работать:

 ls -d -- *.sas | grep -v '^qc_d[ltf]' 

Список файлов, заканчивающихся на .sas, и фильтрации всего, что не является qc_dl, qc_dt, qc_df

Для любых нужд фильтрации grep – ваш друг.

От человека bash:

Если опция оболочки extglob включена с использованием встроенного магазина, то распознаются несколько расширенных операторов сопоставления шаблонов. В следующем описании список шаблонов представляет собой список из одного или нескольких шаблонов, разделенных символом |. Композитные шаблоны могут быть сформированы с использованием одного или нескольких из следующих подматриц:

  ?(pattern-list) Matches zero or one occurrence of the given patterns *(pattern-list) Matches zero or more occurrences of the given patterns +(pattern-list) Matches one or more occurrences of the given patterns @(pattern-list) Matches one of the given patterns !(pattern-list) Matches anything except one of the given patterns 

Затем вы можете использовать более мощное сопоставление образцов, когда оно включено.

Включить это:

 ~$ shopt -s extglob 

Затем вы можете перечислить файлы, которые заканчиваются на .sas и не начинаться с qc_d :

 ~$ ls a.sas a.txt b.sas b.txt c.sas c.txt qc_dc.sas qc_df.sas qc_dl.sas qc_dt.sas ~$ ls !(qc_d*).sas a.sas b.sas c.sas 

Чтобы отключить его:

 ~$ shopt -u extglob 

Вместо этого используйте find ?

 find /my/example/dir -type f -name '*.sas' ! -name 'qc_d[ltf]*' 
  • Команда Shell, чтобы получить все файлы из сложной структуры каталогов
  • Определить количество файлов в каталоге, только глядя на `ls -ald`
  • Разрешения для файлов Sticky & User Execution
  • копирование узлов устройства
  • Скажите, скрыта ли папка / файл в Mac OS X
  • GNU Core Utilities - Как точно отличаются «ls», «dir» и «vdir»?
  • Как перечислить n-й самый младший файл (без разбора ls!)
  • `echo test?` печатает `test2`, но` ls test? 'ничего не печатает
  • Как я могу найти первый недостающий каталог в длинном пути?
  • Solaris + отметка времени файла отображения
  • Что использует «память приложения» Linux?
  • Какой может быть вариант изменения измененного времени файла в будущем?
  • Interesting Posts

    Настроить BIND только как Forwarder (без корневых подсказок), зашифрованный + черный список / белый список RPZ

    В каком пакете находится этот диалог с возможностью поиска?

    Перечислять дубликаты имен файлов в листинге?

    Как интерпретировать это показание smartctl

    wget resume download from dropbox дает не может написать ошибку

    Как настроить QoS на маршрутизаторе (приоритет VOIP и просмотр веб-страниц по загрузке)?

    init: /etc/init.conf: Не удается загрузить конфигурацию: нет такого файла или каталога

    Соединительные разъемы

    Почему BASH печатал «bash: cd: write error: Success»?

    Запуск GNU Parallel на 2 или более узлах с планировщиком Slurm

    получить только имя файла во время итерации по каталогу вместо пути с ним

    SSH SOCKS5 proxy, является ли мой трафик безопасным?

    httpd не запускается после установки

    Как перезаписать ярлыки по умолчанию терминала в xfce?

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

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