#shell
#оболочка
Вопрос:
Я хочу удалить все файлы в каталоге, но не .cpp
файлы.
Мне нужна какая-то команда, например:
rm all except .cpp files
Ответ №1:
Редактировать
Основываясь на предложении не анализировать ls
, вы также можете выполнить цикл самостоятельно:
for f in *; do if [[ $f != *.cpp ]]; then rm "$f"; fi; done
В противном случае может сработать что-то вроде этого:
ls | grep -v ".cpp$" | xargs rm
Если вы хотите сделать это рекурсивно, вы можете использовать:
find . -type f -not -iname "*.cpp" | xargs rm
Ответ №2:
В bash вы можете включить extglob
(если вы еще этого не сделали), запустив shopt -s extglob
, а затем:
rm !(*.cpp)
(сначала бегите echo !(*.cpp)
проверить!)