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

Фатмавати Ахмад Заенури/Shutterstock.com

Команды 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 (force) противоположна интерактивной. Он не запрашивает подтверждение, даже если файлы защищены от записи.

 rm -f filename 

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

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

 каталог rm -d 

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

 rm -d directory1 directory2/path/to/directory3 

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

 rm -r directory1 directory2 directory3 

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

 каталог 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 directory1 directory2 directory3 

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

 rmdir/path/to/directory 

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

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

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

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

 rmdir --ignore-fail-on-непустая работа/отчеты/работа/цитаты 

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

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

 rmdir -p work/invoices 

Директории invoices и work удаляются по запросу.

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

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

Оцените статью
TutoryBird.Ru
Добавить комментарий