Как удалить каждый файл в текущем каталоге, кроме *.c
файлов?Удалить все, кроме * .c
Например, если я делаю rm *.c
, он удаляет все файлы .c, но не удаляет другие файлы.
Я просто хочу сделать обратное.
Как удалить каждый файл в текущем каталоге, кроме *.c
файлов?Удалить все, кроме * .c
Например, если я делаю rm *.c
, он удаляет все файлы .c, но не удаляет другие файлы.
Я просто хочу сделать обратное.
Вы можете сделать это с помощью find
:
find . -not -name *.c -delete
версия выше будет удалить все, что не находится в формате *.c
из текущего каталога и ниже.
Если вы хотите удалить всех не *.c
файлы только в текущем каталоге (и не ниже), вы можете использовать переключатель: -depth 1
find . -depth 1 -not -name *.c -delete
Спасибо за помощь. На самом деле я хотел использовать 'rm' для этого. Но в любом случае вы в основном ответили на вопрос. Также из ссылки, приведенной Jim в комментариях выше, я увидел, что мы можем использовать 'shopt -s extglob', а затем использовать' rm! (* .c) ', чтобы сделать то же самое. Тогда 'shopt -u extglob', когда мы этого не хотим. Но я думаю, мне нужно начать использовать 'find' more .. – sps
@ shreyans800755 Пожалуйста, прочитайте [this] (http://stackoverflow.com/help/editing) – alfasin
https://stackoverflow.com/questions/216995/how -can-i-use-inverse-or-negative-wildcards-when-pattern-matching-in-a-unix-linu –