Как Linux может найти команду удалить несколько файлов? - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть дерево файлов вроде:

.
├── 1
├── 2
├── 3
├── a.txt
├── b.txt
└── c.csv

, сейчас я использую команду:

find . ! -name "*.txt" -delete

Я могу удалить, исключить * .txt.

Но сейчасМне нужно также exlcude c.csv.

На основании этого я попытался эту команду:

find . ! -name "*.txt|*.csv" -delete

Но, к сожалению, эта команда удаляет все файлы и папки.

Итак, как я могу исключить несколько * .XXX?

Ответы [ 2 ]

3 голосов
/ 26 сентября 2019

Дублировать предикат имени:

find . ! -name "*.txt" ! -name "*.csv" -delete
2 голосов
/ 26 сентября 2019

Это неверно:

find . ! -name "*.txt|*.csv" -delete

Это правильный способ записи (ну, один из эквивалентно правильных способов):

find . ! "(" -name "*.txt" -o -name "*.csv" ")" -delete

"Найдите и удалите все файлы, которые не называются * .txt или * .csv "

...