Удалите файлы, которые не заканчивают на “.py” использование комнаты [дубликат]

Возможный дубликат:
Удалите все файлы, но один с комнатой

Это - очень простой вопрос, и я не знаю, существует ли решение или нет.

Я имею некоторые файлы в каталоге, предполагаю, что у меня есть .py и некоторые другие дополнительные файлы. теперь я хотел бы удалить все файлы кроме тех, которые заканчиваются в .py файлы. Как я мог сделать это с rm команда?

Это, я хочу что-то как

!(rm *.py) 

Действительно ли это возможно?

0
задан 20.03.2017, 12:04

0 ответов

shopt -s extglob
rm !(*.py)

Вы включаете extglob переменную. Это дает Вам некоторые дополнительные функции сопоставления с образцом, особенно отрицание.

Можно отключить его снова с shopt -u extglob.

8
ответ дан 24.11.2019, 02:36

Легкий помнить находка:

find -not -name "*.py" -delete 

Это удалит файлы в subdirs также, по сравнению с larsmas решением, но можно предотвратить это с-maxdepth параметром.

Не каждый find реализация могла бы поддерживать delete опция. Гну находит, делает начиная с версии 4.2.3.

5
ответ дан 24.11.2019, 02:36

Принятие Вы используете Bash:

shopt -s extglob
mv !(*.py) some_dir
2
ответ дан 24.11.2019, 02:36
ls | grep -v ".py$" | xargs rm
2
ответ дан 24.11.2019, 02:36

Теги

Похожие вопросы