Как удалить файлы и каталоги в терминале Linux? Команда RMDIR (RD) – удалить каталог файловой системы Windows Удалить папку в линукс из консоли


Команды 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.

Рм *.?

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

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

Rm -i * .dat

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

Rm -f имя_файла

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

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

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 path/to/directory

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

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

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

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

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

Rmdir directory

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

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

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

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

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

Rmdir -p work/invoices

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

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

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

Командная строка – мощный инструмент для автоматизации и упрощения многих задач, которые возникают при администрировании компьютера с операционной системой Windows. В этой статье мы рассмотрим команды DEL, ERASE, RD и RMDIR. С их помощью вы сможете удалять файлы и папки прямо из командной строки.

Если вам нужно удалить файл через , то для этого нужно использовать команду DEL или ERASE . Эти команды являются синонимами и работают одинаково. Вы можете получить подробную информацию об этих командах, если введете их в командную строку с параметром «/? ». Например, вы можете ввести «del /? » и в консоль выведется вся основная информация о команде del .

Команда DEL (или ERASE ) предназначена для удаления одного или нескольких файлов и может принимать следующие параметры:

  • /P – удаление с запросом подтверждения для каждого файла;
  • /F – удаление файлов с атрибутом «только для чтения»;
  • /S – удаление указанного файла из всех вложенных папок;
  • /Q – удаление без запроса на подтверждение;
  • /A – удаление файлов согласно их атрибутам;

    • S — Системные;
    • H — Скрытые;
    • R – Только для чтения;
    • A — Для архивирования
    • Также перед атрибутами можно использовать знак минус «-», который имеет значение «НЕ». Например, «-S» означает не системный файл.

Обычно, для того чтобы воспользоваться командной DEL нужно сначала перейти в папку, в которой находится файл для удаления, и после этого выполнить команду. Для того чтобы сменить диск нужно просто ввести букву диска и двоеточие. А для перемещения по папкам нужно использовать команду «CD ».

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

Также, при необходимости вы можете удалять файлы, не перемещаясь по папкам. В этом случае нужно указывать полный путь к документу.

Если есть необходимость выполнить запрос на подтверждение удаления каждого их файлов, то к команде DEL нужно добавить параметр «/p ». В этом случае в командной строке будет появляться запрос на удаление файла и пользователю нужно будет ввести букву «Y» для подтверждения.

Нужно отметить, что при использовании параметра «/a», отвечающие за атрибуты буквы нужно вводить через двоеточие. Например, для того чтобы удалить все файлы с атрибутом «только для чтения» и с расширением «txt» нужно ввести команду «del /F /A:R *.txt ».

Аналогичным образом к команде DEL можно добавлять и другие параметры. Комбинируя их вы сможете создавать очень мощные команды для удаления файлов через командную строку Windows. Ниже мы приводим еще несколько примеров:

  • del D:\ — уничтожение всех файлов в корне диска D;
  • del D:\*.txt – уничтожение всех файлов с расширением txt в корне диска D;
  • del D:\doc – уничтожение всех файлов в папке d:\doc (документы с атрибутами будут пропущены);
  • del /A:r d:\doc\*.txt – уничтожение всех файлов с атрибутом «только для чтения» и расширением «txt» в папке d:\doc;

Удаление папок через командную строку

Если вам нужно удалить папку через командную строку Windows, то указанные выше команды вам не помогут. Для удаления папок существует отдельная команда RD или RMDIR (сокращение от английского Remove Directory).

Команды RD и RMDIR являются синонимами и предназначены для удаления папок. Они могу принимать следующие параметры:

  • /S — удаление всего дерева каталогов, при использовании данного параметра будет удалена не только сама папка, но и все ее содержимое;
  • /Q – удаление дерева папок без запроса на подтверждение;

Например, для того чтобы удалить папку достаточно ввести команду RD и название папки.

Если папка содержит вложенные папки или файлы, то при ее удалении будет выведена ошибка».

Для решения этой проблемы к команде RD нужно добавить параметр «/s ». В этом случае удаление проходит без проблем, но появляется запрос на подтверждение удаления.

Для того чтобы удаление дерева папок прошло без появления запроса на подтверждение к команде нужно добавить параметр «/q ». В этом случае папка удаляется без лишних вопросов.

Также команда RD может принимать сразу несколько папок, для этого их нужно просто разделить пробелом. Например, если выполнить «rd 111 222 », то за один раз можно удалить папки с названиями «111 » и «222 ».

Если же вам нужно удалить через командную строку папку, которая сама содержит пробел, то в этом случае ее название нужно взять в двойные кавычки.

Комбинируя команды DEL и RD , можно создавать мощные скрипты для очистки и удаления папок в операционной системе Windows.

В операционных системах на базе ядра Linux обычно хранится большое количество пустых и непустых директорий. Некоторые из них занимают достаточное большое количество места на накопителе, а также часто становятся ненужными. В таком случае правильным вариантом будет их удаление. Способов выполнения очистки существует несколько, каждый из них применим в определенной ситуации. Давайте рассмотрим все доступные методы более детально, а вы выберете наиболее подходящий, исходя из своих потребностей.

В рамках данной статьи мы поговорим о консольных утилитах и дополнительных инструментах, запуск которых осуществляется через ввод команд. Однако не стоит забывать, что часто в дистрибутивах реализованы графические оболочки. Соответственно, для удаления директории вам всего лишь нужно перейти к ней через файловый менеджер, щелкнуть правой кнопкой мыши на иконке и выбрать «Удалить» . После этого не забудьте очистить корзину. Однако не для всех юзеров такой вариант будет применим, поэтому советуем ознакомиться со следующими руководствами.

Перед началом рассмотрения способов важно отметить, что при вводе команды чаще всего вы будете самостоятельно указывать название папки, которую требуется удалить. Когда вы находитесь не в ее расположении, следует указать полный путь. Если есть такая возможность, рекомендуем узнать родительский каталог объекта и перейти в него через консоль. Выполняется это действие буквально за несколько минут:


Если же вы не имеете возможности определить расположение, при удалении вам придется вводить полный путь самостоятельно, поэтому его придется знать.

Способ 1: Стандартные команды «Терминала»

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

Команда rmdir

В первую очередь хотелось бы затронуть rmdir. Она предназначена для очистки системы только от пустых директорий. Удаляет их безвозвратно, а преимущество этого инструмента заключается в простоте его синтаксиса и отсутствии возникновения каких-либо ошибок. В консоли достаточно прописать rmdir folder , где folder — имя папки в текущем расположении. Активация инструмента производится нажатием на клавишу Enter .

Ничто не мешает указать полный путь к каталогу, если вы не можете перейти в необходимое расположение или в этом нет надобности. Тогда строка обретает, например, следующий вид: rmdir /home/user/folder/folder1 , где user — имя пользователя, folder — родительский каталог, а folder1 — папка для удаления. Обратите внимание, что перед home обязательно ставится слеш, а в конце пути он должен отсутствовать.

Команда rm

Предыдущий инструмент является одной из составляющих утилиты rm. Изначально она предназначена для удаления файлов, но если придать ей соответствующий аргумент, она сотрет и папку. Такой вариант уже подходит для непустых каталогов, в консоль при этом нужно ввести rm -R folder (или полный путь к каталогу). Обратите внимание на аргумент -R — он запускает рекурсивное удаление, то есть касается оно всего содержимого папки и ее самой. Учитывать регистр при вводе обязательно, потому что -r — уже совсем другая опция.

Если вы хотите вывести на экран список всех удаленных файлов и папок при использовании rm, тогда потребуется немного видоизменить строку. Введите в «Терминале» rm -Rfv folder , а затем активируйте команду.

После завершения удаления отобразится информация обо всех каталогах и отдельных объектах, ранее располагавшихся по указанному расположению.

Команда find

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

  1. Как известно, find служит для поиска объектов внутри системы. Благодаря применению дополнительных опций вы можете найти каталоги с определенным именем и сразу же удалить их. Для этого в консоли введите find . -type d -name "folder" -exec rm -rf {} \;, где folder — наименование каталога. Обязательно при этом писать двойные кавычки.
  2. В отдельной строке иногда отображается информация о том, что такого файла или каталога нет, но это не значит, что он не был найден. Просто find сработала повторно уже после удаления каталога из системы.
  3. find ~/ -empty -type d -delete позволяет удалить все пустые папки, находящиеся в системе. Некоторые из них доступны только суперпользователю, поэтому перед find следует добавить sudo .
  4. На экране появятся данные обо всех найденных объектах и успешности выполнения операции.
  5. Можно также указать только определенный каталог, в котором инструмент будет осуществлять поиск и очистку. Тогда строка будет выглядеть, например, так: find /home/user/Folder/ -empty -type d -delete .

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

Доброго времени суток, дорогие читатели. Сегодня хотелось бы поговорить на тему удаления директории в PHP. Казалось бы, что операция не является сложной, однако некоторые нюансы имеют место быть. Давайте рассмотрим способы, как можно это сделать.

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

В сети советуют написать функцию, которой в качестве аргумента будет передаваться путь к директории, которую нам необходимо удалить. В теле функции необходимо организовать листинг содержимого директории, в рамках которого осуществляется проверка - является ли файл директорией. Если файл является директорией, то по данному условию функция вызывает себя. Это необходимо для зачистки вложенных директорий, и это будет работать на всех уровнях вложенности. В ином случае, для файла применяется функция unlink() - она предназначена для удаления файла. За рамками данной проверки на последнем шаге мы удаляем директорию.

Пример реализации:

Function recursiveRemoveDir($dir) { $includes = glob($dir."/*"); foreach ($includes as $include) { if(is_dir($include)) { recursiveRemoveDir($include); } else { unlink($include); } } rmdir($dir); } //Удалим из текущей директории директорию tmp recursiveRemoveDir("tmp");
Какие проблемы у данного кода?

В простых случаях директория со всеми вложениями удалится. Но предположим, что в нашей директории присутствует скрытый файл, который начинается с точки, например, .htaccess . Функция glob() представляет из себя glob-подстановку UNIX, в которой по умолчанию не участвуют скрытые файлы (DOTFILES). Например, если мы зайдем в nix-терминал и будем использовать bash, то мы столкнемся с той же проблемой (речь именно о скрытых файлах в рамках glob). Для решения вопроса в bash существует команда shopt -s dotglob - она разрешает glob-подстановку скрытых файлов. В PHP же это можно решить добавлением дополнительно параметра GLOB_BRACE для glob() и расширением паттерна из первого параметра функции.

$includes = glob("tmp/{,.}*", GLOB_BRACE);
И тут так же есть проблема - мы столкнемся с бесконечным циклом, так как в массив войдут значения. и.. - что является на системном уровне текущей и родительской директорией. Придем мы к бесконечному циклу (а не к удалению всех родительских директорий), потому что. в рамках сортировки по умолчанию в сформированном массиве будет первее.. - то есть каждый раз мы будет обращаться к одной и той же директории. Для решения проблемы сформируем массив из данных системных директорий и в цикле удалим их индексы из основного массива. Также существует проблема символьных ссылок. Допустим, что в удаляемой директории размещена ссылка на другую директорию, в удалении содержимого которой мы абсолютно не заинтересованы. Для решения проблемы, перед созданием рекурсии, необходимо организовать проверку на то, что сущность не является ссылкой.

В итоге, функция обретает следующий вид:

Function recursiveRemoveDir($dir) { $includes = glob($dir."/{,.}*", GLOB_BRACE); $systemDots = preg_grep("/\.+$/", $includes); foreach ($systemDots as $index => $dot) { unset($includes[$index]); } foreach ($includes as $include) { if(is_dir($include) && !is_link($include)) { recursiveRemoveDir($include); } else { unlink($include); } } rmdir($dir); } //Удалим из текущей директории директорию tmp recursiveRemoveDir("tmp");
Код рабочий, но на самом деле можно было сделать и проще. В PHP существует класс FilesystemIterator, который уже по умолчанию имеет необходимые нам настройки. В конструктор передается путь до директории, листинг которой нам нужен. Нам достаточно просто создать объект.

Function recursiveRemoveDir($dir) { $includes = new FilesystemIterator($dir); foreach ($includes as $include) { if(is_dir($include) && !is_link($include)) { recursiveRemoveDir($include); } else { unlink($include); } } rmdir($dir); } //Удалим из текущей директории директорию tmp recursiveRemoveDir("tmp");
В заключение хотелось бы отметить еще один быстрый способ. Корректность его использования весьма сомнительна - отправить команду на выполнение в SHELL.

System("rm -rf tmp");
Обращаю внимание на высокий расход памяти и на то, что зачастую администраторы запрещают использовать на сервере такого рода функции в целях безопасности.

Теги: php, rmdir, glob, рекурсия

Команда rmdir поможет нам удалить пустую директорию, то есть директорию без файлов и папок. Синтаксис команды очень прост:

Rmdir DIRNAME

В случае если директория не пуста вы увидите следующее сообщение об ошибке.

$ rmdir test rmdir: failed to remove `test": Directory not empty

2. Как удалить вложенные директории в Linux?

С помощью опции -p вы можете удалить директорию с вложенной в неё поддиректорией.

$ rmdir -p dir1/dir2/dir3

Команда rmdir -p dir1/dir2/dir3 это эквивалент команды

$ rmdir dir1/dir2/dir3 dir1/dir2 dir1

3. Удаление директории с содержимым

Если вам потребовалось удалить директорию с содержимым вы можете использовать команду rm :

$ rm -rf DIRNAME

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

4. Интерактивное удаление

Во избежание случайного удаления нужных файлов рекомендую рассмотреть возможность использования опции -i для интерактивного удаления файлов и папок (особенно с правами root).

Рекурсивное и интерактивное удаление директории.

# rm -ir DIRNAME

Интерактивное удаление файла.

# rm -i FILENAME

5. Полезные алиасы для команд rm и rmdir

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

Алиас для постоянного выполнения rm в интерактивном режиме

# alias rm="rm -i"

При использовании команды rm на самом деле будет выполняться команда rm -i . Но необходимо обратить внимание на один ньюанс. Не используйте опцию -i в дальнейшем, так как вы не получите желаемого эффекта. Рассмотрим пример:

В следующей команде использование -i не даст вам ожидаемый эффект..

$ rm -irf DIRNAME

В этом случае, при использовании алиаса, команду выше необходимо запускать следующим образом:

$ rm -rf DIRNAME

Все указанные ниже команды эквивалентны и выполняют один и тот же функционал.

  • rm -fr
  • rm -rf
  • rm -r -f
  • rm -f -r

Если вам необходима экспертная оценка здания, рекомендую заказать обследование готовых зданий специалистами научно-производственного центра «Технопласт»