Возможный дубликат:
Удалите все файлы, но один с комнатой
Это - очень простой вопрос, и я не знаю, существует ли решение или нет.
Я имею некоторые файлы в каталоге, предполагаю, что у меня есть .py и некоторые другие дополнительные файлы. теперь я хотел бы удалить все файлы кроме тех, которые заканчиваются в .py
файлы. Как я мог сделать это с rm
команда?
Это, я хочу что-то как
!(rm *.py)
Действительно ли это возможно?
shopt -s extglob
rm !(*.py)
Вы включаете extglob переменную. Это дает Вам некоторые дополнительные функции сопоставления с образцом, особенно отрицание.
Можно отключить его снова с shopt -u extglob
.
Легкий помнить находка:
find -not -name "*.py" -delete
Это удалит файлы в subdirs также, по сравнению с larsmas решением, но можно предотвратить это с-maxdepth параметром.
Не каждый find
реализация могла бы поддерживать delete
опция. Гну находит, делает начиная с версии 4.2.3.