ls все каталоги, которые НЕ совпадают с расширениями, кратными - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь перечислить все, что НЕ заканчивается на .tar * или * .tgz

Например

directory1/
ls -ltr *
06062018.tar.gz
06062018.tar.tgz
06062018.tgz
06062018/
directory2/06062018.tar.gz
directory3/06062018.tar.tgz
directory4/06062018.tgz
directory5/06062018/
directory6/06062018.1/

Ожидается вывод:

0606218/
directory5/06062018/
directory6/06062018.1/

Что я исследовал:
RegEx - Найти все, что не содержит шаблон
Список всех файлов, которые не соответствуют селектору (с помощью ls)

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

Что я пробовал: ls -ltr * | grep -v $ tar.gz

ls -ltr * !(*.tar.gz)
find ./* -maxdepth 1 ! -path "*tar.*"
find . -maxdepth 1 ! -path "[*.tar.gz|*tgz]"
ls -ltr | grep -v "[*tar*|*tgz]" 
ls -ltr */* --ignore=*.tar.gz --ignore=*tgz 
ls -ltr ./* --ignore=*.tar* --ignore=*tgz 

1 Ответ

0 голосов
/ 03 июля 2018

Просто используйте два ! -name паттерна.

find * -maxdepth 1 ! -name '*.tar*' ! -name '*.tgz'
...