Поиск по сайту:

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


Резюме: введите «rm (имя файла)» в Терминале, чтобы удалить файл в Linux. Чтобы удалить всю папку (или каталог) и все ее содержимое, вместо этого введите «rm -r (имя папки)» в Терминале.

Команды 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 и нажать «Ввод».

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

rm -i *.dat

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

rm -f filename

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

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

rm -d directory

При указании более одного имени каталога удаляются все указанные пустые каталоги.

rm -d directory1 directory2 /path/to/directory3

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

rm -r directory1 directory2 directory3

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

rm -rf directory

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

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

sudo apt-get install tree

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

tree

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

tree path/to/directory

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

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

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

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

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

rmdir directory

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

rmdir directory1 directory2 directory3

Чтобы удалить каталог, не входящий в текущий каталог, укажите полный путь к этому каталогу:

rmdir /path/to/directory

Если вы попытаетесь удалить непустую папку, 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 игнорировать ошибку и переходить к следующей папке, которую необходимо обработать, то есть к работа/котировки. Это пустая папка, и rmdir удаляет ее.

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

rmdir --ignore-fail-on-non-empty work/reports /work/quotes

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

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

rmdir -p work/invoices

Каталоги invoices и work удаляются в соответствии с запросом.

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

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

RELATED: Best Linux Laptops for Developers and Enthusiasts