Как удалить файлы и каталоги в терминале Linux

rm И   rmdir команды удаления файлов и каталогов на Linux, MacOS и других Unix-подобных операционных систем. Они подобны del и   deltree команд в ОС Windows и DOS. Эти команды очень мощные и имеют довольно много опций.

Важно отметить , что файлы и каталоги удаляются с помощью rmи rmdirне перемещаются в корзину. Они сразу удаляются с вашего компьютера. Если вы случайно удалите файлы с помощью этих команд, вы сможете восстановить их только из резервной копии.

Как удалить файлы с помощью rm

Самый простой случай - удалить один файл в текущем каталоге. Введите rmкоманду, пробел и имя файла, который вы хотите удалить.

rm file_1.txt

Если файл не находится в текущем рабочем каталоге, укажите путь к расположению файла.

rm ./path/to/the/file/file_1.txt

Вы можете передать несколько файлов rm. При этом удаляются все указанные файлы.

rm file_2.txt file_3.txt

Подстановочные знаки можно использовать для выбора групп файлов для удаления. Символ *представляет несколько символов, а символ ?- один. Эта команда удалит все файлы изображений png в текущем рабочем каталоге.

rm * .png

Эта команда удалит все файлы с односимвольным расширением. Например, это приведет к удалению File.1 и File.2, но не File.12.

rm *.?

Если файл защищен от записи, вам будет предложено перед удалением файла. Вы должны ответить yили nи нажать «Enter».

Чтобы снизить риск использования rmподстановочных знаков, используйте параметр -i(интерактивный). Для этого вам необходимо подтвердить удаление каждого файла.

rm -i * .dat

Параметр -f (сила) противоположен интерактивному. Он не запрашивает подтверждения, даже если файлы защищены от записи.

rm -f имя файла

Как удалить каталоги с помощью rm

Чтобы удалить пустой каталог, используйте параметр -d (каталог). Вы можете использовать подстановочные знаки ( *и ?) в именах каталогов так же, как и в именах файлов.

rm -d каталог

Если указать более одного имени каталога, будут удалены все указанные пустые каталоги.

rm -d каталог1 каталог2 / путь / к / каталог3

Чтобы удалить непустые каталоги, используйте параметр -r(рекурсивный). Чтобы было ясно, это удаляет каталоги и все файлы и подкаталоги, содержащиеся в них.

rm -r каталог1 каталог2 каталог3

Если каталог или файл защищены от записи, вам будет предложено подтвердить удаление. Чтобы удалить непустые каталоги и подавить эти запросы, используйте параметры -r(рекурсивный) и -f(принудительно) вместе.

rm -rf каталог

Здесь требуется осторожность. Ошибка с rm -rfкомандой может привести к потере данных или сбоям в работе системы. Это опасно, а осторожность - лучшая политика. Чтобы понять структуру каталогов и файлы, которые будут удалены rm -rfкомандой, используйте treeкоманду.

Используйте  apt-get для установки этого пакета в вашу систему, если вы используете Ubuntu или другой дистрибутив на основе Debian. В других дистрибутивах Linux используйте вместо этого инструмент управления пакетами вашего дистрибутива Linux.

дерево установки sudo apt-get

Выполнение treeкоманды создает простую для понимания диаграмму структуры каталогов и файлов в каталоге, из которого она запускается.

дерево

Вы также можете указать путь к treeкоманде, чтобы она запускала дерево из другого каталога в файловой системе.

дерево путь / в / каталог

У rmкоманды также есть --one-file-system, --no-preserve-root, --preserve-rootпараметры, но они рекомендуются только для опытных пользователей. Если вы ошиблись, вы можете случайно удалить все системные файлы. Обратитесь к странице руководства по команде для получения дополнительной информации.

Как удалить каталоги с помощью rmdir

Есть еще одна команда, rmdirкоторую вы можете использовать для удаления каталогов. Разница между rmи rmdirзаключается в том, что rmdirможно удалять только пустые каталоги. Он никогда не удалит файлы.

Самый простой случай - удалить один пустой каталог. Как и в случае rm, вы можете передать несколько имен каталогов rmdirили путь к каталогу.

Удалите один каталог в текущем каталоге, передав его имя в rmdir:

каталог rmdir

Удалите несколько каталогов, передав список имен в   rmdir:

rmdir каталог1 каталог2 каталог3

Удалите каталог не в текущем каталоге, указав полный путь к этому каталогу:

rmdir / путь / к / каталогу

Если вы попытаетесь удалить непустую папку, rmdirпоявится сообщение об ошибке. В следующем примере rmdirуспешно и незаметно удаляет clientsкаталог, но он отказывается удалить projectsкаталог, потому что он содержит файлы. projectsКаталог осталось точно так , как это было и файлы в нем не трогают.

Когда rmdirвыдает ошибку «Каталог не пуст», он прекращает обработку каталогов, которые были переданы ему в командной строке. Если вы попросите его удалить четыре каталога, а в первом из них есть файлы, rmdirвы получите сообщение об ошибке и больше ничего не сделаете. Вы можете заставить его игнорировать эти ошибки с помощью --ignore-fail-on-non-emptyопции, чтобы другие каталоги обрабатывались.

В следующем примере были переданы две папки rmdir, это work/reportsи work/quotes. --ignore-fail-on-non-emptyВариант был включен в команду. В work/reportsпапке есть файлы, поэтому rmdirудалить ее нельзя. Этот --ignore-fail-on-non-emptyпараметр заставляет rmdirигнорировать ошибку и перейти к следующей папке, которую необходимо обработать, а именно work/quotes. Это пустая папка, и rmdirудаляет ее.

Это была используемая команда.

rmdir --ignore-fail-on-non-empty работа / отчеты / работа / цитаты

Вы можете использовать  -p опцию (parent), чтобы удалить каталог, а также удалить его родительские каталоги. Этот трюк работает, потому что rmdirначинается с целевого каталога, а затем возвращается к родительскому. Этот каталог теперь должен быть пустым, чтобы его можно было удалить rmdir, и процесс повторяется, шагая назад по пути, который был предоставлен rmdir.

В следующем примере передается следующая команда rmdir:

rmdir -p работа / счета

И каталоги, invoicesи workкаталоги удаляются по запросу.

Независимо от того, используете ли вы Bash или любую другую оболочку, Linux предоставляет гибкие и мощные команды для удаления каталогов и файлов прямо из командной строки терминала. Некоторые люди предпочитают, чтобы рабочий процесс вращался вокруг терминала. У других может не быть выбора в этом вопросе. Они могут работать на серверах без установленного графического интерфейса или в удаленном сеансе на автономной системе, такой как Raspberry Pi. Эти команды идеально подходят для этой группы людей.

Но какой бы тип рабочего процесса вы ни предпочли, эти команды очень хорошо поддаются включению в сценарии оболочки. Если сценарий запускается cronзаданием, он может помочь автоматизировать рутинные служебные задачи, такие как очистка ненужных файлов журнала. Если вы исследуете этот вариант использования, помните о силе этих команд, тщательно все протестируйте и всегда поддерживайте последнюю резервную копию.