Выбор набора файлов путем сопоставления с шаблоном, но исключая их подмножество (bash)

#bash #file

#баш #файл

Вопрос:

Просто хочу выбрать подмножество файлов:

  (1) DEC2017_L3S1D20.txt
 (2) FP.DEC2017_L1S1D05_2_fastqc.txt
 

Итак, я хочу выбрать (1) файлы для последующего анализа, но исключая (2) файлы, единственный известный мне способ «выбрать» шаблон файлов *.txt — это использовать, но таким образом я выбираю их все.

редактировать: я не хочу, чтобы «fastqc.txt » выбирать нужно только те, которые заканчиваются на «L3S1D20.txt »

Комментарии:

1. Какова логика или ключевое слово для исключения 2-го?

2. Я не хочу, чтобы «fastq.txt » файлы, которые нужно выбрать

3. ???????????????.txt

4. Это должно сделать свою работу: *L3S1D20.txt

Ответ №1:

Если ваша bash версия 4.0 или выше, пожалуйста, попробуйте что-то вроде:

 shopt -s extglob

for f in !(*fastqc).txt; do
    echo "$f"
done
 

Если функция extglob включена с shopt помощью встроенного, вы можете использовать:

!(список шаблонов)
Соответствует чему угодно, кроме одного из заданных шаблонов

Ответ №2:

Использование grep:

 ls | grep -v "fastqc.txt" | grep "L3S1D20.txt$"