У пользователей ОС Linux в каталогах может храниться большое количество файлов. В будущем какие-то из них наверняка придется удалить, чтобы не занимали место на дисковом пространстве. Обычно пользователь по одному удаляют лишние файлы, оставляя только нужные, но на чистку папок подобным образом тратится очень много времени. В Linux существует несколько способов удалить все ненужные файлы в каталоге. В этой статье мы расскажем о трех из них подробнее.
Содержание:
Используйте команду rm
Утилита командной строки rm
нужна, чтобы удалять файлы и директории. Обычно пользователи ее применяют для удаления какого-то одно файла или каталога. Однако, ее можно использовать и для решения нашей задачи. Чтобы удалить все файлы в каталоге, кроме одного конкретного, добавьте к команде аргумент !("filename")
:
Читайте также: Как удалить огромные (100-200 ГБ) файлы в Linux.
Вы можете удалить все файлы, за исключением нескольких с разными названиями. Для этого в скобках перечислите их названия, разделяя символом вертикальной черты:
В одном каталоге может быть несколько файлов с разным расширениями. Команда rm
позволяет удалить все файлы, кроме тех, которые имеют указанный формат. Например:
Если показанные способы у Вас не работали, значит Вам нужно включить опции extglob
оболочки bash. Параметры extglob
позволят использовать более сложные шаблоны в качестве аргументов команды rm
:
После удаления всех необходимых файлов, Вы можете отключить extglob
, если его параметры больше Вам не понадобятся:
Используйте команду find
Утилита find
осуществляет поиск файлов в иерархии каталогов. Хотя, ее также можно применять и для удаления файлов. Для решения поставленной задачи нужно использовать следующий синтаксис:
Давайте разберем подробнее синтаксис команды:
<directory-path>
— указывает путь к каталогу;-type f
— определяет тип объекта директории (в нашем случае — обычный файл);-not
— обозначает, чтоfind
будет обрабатывать все файлы, не соответствующие указанному шаблону;-name 'filename'
— указывает название шаблона для поиска;-delete
— удаляет найденные объекты.
Представим, что нам нужно удалить в текущем каталоге все файлы, кроме имеющих расширение *.gz
:
Если в каталоге находится несколько важных файлов, у Вас есть возможность сохранить их в каталоге, а остальные удалить. Для этого используйте следующую команду:
В этой команде используется опция -or
. Она позволяет указать сразу несколько шаблонов. Например, удалим все файлы, за исключение тех, что имеют расширение *.gz
и *.txt
:
Вы также можете использовать find
вместе с командами rm
и xargs
для удаления всех файлов каталога, за исключением указанного:
Давайте разберем подробнее синтаксис команды:
-print0
— выводит на экран названия файлов, которые будут удалены;xargs
— передает названия файлов в качестве аргументов командеrm
;-0
— указываетxargs
использовать нулевые символы в качестве разделителей;-I
— указывает, что названия файлов должны быть заменены на{}
в командеrm
.
Используйте переменную GLOBIGNORE
Переменная GLOBIGNORE
обозначает те, файлы, которые команды будут игнорировать во время обработки каталога.
Важно: GLOBIGNORE
доступна только в оболочке bash
.
Чтобы задействовать эту переменную, перейдите в нужный каталог и установите значение переменной следующим образом:
Чтобы указать несколько форматов файлов, их нужно разделять двоеточиями. Теперь можете просто выполнить команду rm
со знаком *
в виде аргумента, чтобы удалить файлы из каталога:
Файлы с расширениями, указанными в переменной GLOBIGNORE
, из текущей директории удалены не будут. Теперь Вы можете отключить эту переменную:
Читайте также: Как установить или изменить переменную среды $PATH в Linux.
Выводы
В этой статье мы рассказали о том, как Вы можете удалить все файлы из каталога, за исключением указанных, прямо в терминале Linux. Мы разобрали три способа, которые Вы можете использовать для этого. Они существенно сократят затраты времени на выполнение рутинной задачи, как для обычных пользователей, так и для системных администраторов. Желаем Вам успехов в обучении, трудоустройстве и работе!
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.