Как да изтрия файлове и директории в Linux терминал? Команда RMDIR (RD) – изтриване на директория на файловата система на Windows Изтриване на папка в Linux от конзолата


Командите rm и rmdir изтриват файлове и директории на Linux, macOS и други Unix-подобни операционни системи. Те са подобни на командите del и deltree в Windows и DOS. Тези команди са много мощни и имат доста опции.

Важно е да се отбележи, че файлове и директории, изтрити чрез rm и rmdir, не се преместват в кошчето. Те незабавно се премахват от вашия компютър. Ако случайно сте изтрили файлове с тези команди, ще можете да ги възстановите само от резервно копие.

Как да изтриете файлове с помощта на rm

Най-простият случай е изтриването на един файл в текущата директория. Въведете командата rm, интервал и след това името на файла, който искате да изтриете.

Rm файл_1.txt

Ако файлът не е в текущата работна директория, посочете пътя до местоположението на файла.

Rm ./път/към/файла/файл_1.txt

Можете да подадете повече от едно име на файл към rm. Това изтрива всички посочени файлове.

Rm файл_2.txt файл_3.txt

Заместващи знаци могат да се използват за избор на групи от файлове за изтриване. Знак * представлява множество знаци и знака ? представлява един знак. Тази команда ще изтрие всички png файлове с изображения в текущата работна директория.

Rm * .png

Тази команда ще изтрие всички файлове със същото разширение. Например, това ще изтрие File.1 и File.2, но не и File.12.

Rm *.?

Ако файлът е защитен от запис, ще бъдете подканени да го изтриете. Трябва да отговорите с гили ни натиснете "Enter".

За да намалите риска от използване на rm със заместващи знаци, използвайте опцията (интерактивен). За да направите това, трябва да потвърдите изтриването на всеки файл.

Rm -i * .dat

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

Rm -f име на файл

Как да премахнете директории с помощта на rm

За да премахнете празна директория, използвайте опцията (указател). Можете да използвате заместващи знаци (* и?) в имената на директориите точно както можете в имената на файловете.

Rm -d директория

Предоставянето на повече от едно име на директория премахва всички посочени празни директории.

Rm -d директория1 директория2 /път/до/директория3

За да премахнете непразните директории, използвайте опцията (рекурсивен). За да бъде ясно, това изтрива директории и всички файлове и поддиректории, съдържащи се в тях.

Rm -r директория1 директория2 директория3

Ако директорията или файлът са защитени от запис, ще бъдете подканени да потвърдите изтриването. За да премахнете непразните директории и да потиснете тези подкани, използвайте опциите заедно (рекурсивен) и -f(принуден).

Rm -rf директория

Тук е необходимо внимание. Грешка в командването rm -rfможе да доведе до загуба на данни или неизправност на системата. Това е опасно и предпазливостта е най-добрата политика. За да получите представа за структурата на директорията и файловете, които ще бъдат изтрити от rm -rf, използвайте командата дърво.

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

Sudo apt-get инсталационно дърво

Изпълнението на командата за дърво създава лесна за разбиране диаграма на структурата на директорията и файловете в директорията, от която се изпълнява.

Можете също така да посочите пътя до командата дърво, така че тя да стартира дървото от друга директория на файловата система.

Дървовиден път/към/директория

Командата rm също има опции --one-file-system, --no-preserve-root, --preserve-root, но те се препоръчват само за напреднали потребители. Ако направите нещо нередно, може случайно да изтриете всички системни файлове.

Как да премахнете директории с помощта на rmdir

Има друга команда, rmdir, която можете да използвате за премахване на директории. Разликата между rm и rmdir е, че rmdir може да изтрива само празни директории. Никога няма да изтрие файлове.

Най-простият случай е изтриването на една празна директория. Както при rm, можете да подадете множество имена на директории към rmdir или rmdir път към директория.

Премахнете една директория в текущата директория, като предадете името й на rmdir:

Rmdir директория

Премахнете множество директории чрез предаване на списък с имена на rmdir:

Rmdir директория1 директория2 директория3

Премахнете директория, която не е в текущата директория, като посочите пълния път до тази директория:

Rmdir /път/към/директория

Ако се опитате да изтриете папка, която не е празна, rmdir ще ви даде съобщение за грешка. В следващия пример rmdir успешно и безшумно изтрива директорията на клиентите, но отказва да изтрие директорията на проекти, защото съдържа файлове. Директорията на проекти остава точно както е била, а файловете в нея са недокоснати.

Когато 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 work/reports /work/quotes

Можете да използвате опцията -стр(родител), за да премахнете директория, както и да премахнете нейните родителски директории. Този трик работи, защото rmdir започва от целевата директория и след това се връща към родителската. Тази директория вече трябва да е празна, за да може да бъде премахната от rmdir и процесът повтаря стъпката назад по пътя, предоставен от rmdir.

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

Rmdir -p работа/фактури

Фактурите и работните директории се изтриват при поискване.

Използвате ли Bash или друга обвивка? Linux предоставя гъвкави и мощни команди за изтриване на директории и файлове директно от командния ред на терминала. Някои хора предпочитат да имат работен процес, който се върти около терминал. Други може да нямат избор по въпроса. Те могат да работят на сървъри без инсталиран GUI или в отдалечена сесия на самостоятелна система като 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 и името на папката.

Ако дадена папка съдържа подпапки или файлове, ще се покаже грешка при изтриването й."

За да разрешите този проблем, трябва да добавите параметъра “/s” към командата RD. В този случай изтриването протича без проблеми, но се появява заявка за потвърждение на изтриването.

За да може дървото на папките да бъде изтрито без да се появи заявка за потвърждение, трябва да добавите параметъра “/q” към командата. В този случай папката се изтрива без въпроси.

Освен това командата RD може да приема няколко папки наведнъж; за да направите това, просто трябва да ги разделите с интервал. Например, ако изпълните „rd 111 222“, тогава можете да изтриете папки с имена „111“ и „222“ наведнъж.

Ако трябва да изтриете папка чрез командния ред, която сама по себе си съдържа интервал, тогава в този случай името й трябва да бъде затворено в двойни кавички.

Чрез комбиниране на командите DEL и RD можете да създадете мощни скриптове за почистване и изтриване на папки в операционната система Windows.

Операционните системи, базирани на ядрото на Linux, обикновено съхраняват голям брой празни и непразни директории. Някои от тях заемат доста голямо количество място за съхранение и често стават ненужни. В този случай правилният вариант би бил да ги премахнете. Има няколко начина за извършване на почистване, всеки от които е приложим в конкретна ситуация. Нека разгледаме по-подробно всички налични методи и вие ще изберете най-подходящия въз основа на вашите нужди.

В тази статия ще говорим за конзолни помощни програми и допълнителни инструменти, които се стартират чрез въвеждане на команди. Не забравяйте обаче, че графичните обвивки често се внедряват в дистрибуции. Съответно, за да изтриете директория, просто трябва да отидете до нея през файловия мениджър, щракнете с десния бутон върху иконата и изберете "Изтрий". Не забравяйте след това да изпразните кошчето си. Тази опция обаче няма да е приложима за всички потребители, затова ви препоръчваме да прочетете следните ръководства.

Преди да започнете да разглеждате методите, важно е да отбележите, че когато въвеждате команда, най-често ще посочите независимо името на папката, която искате да изтриете. Когато не сте на мястото му, трябва да посочите пълния път. Ако е възможно, препоръчваме да намерите родителската директория на обекта и да отидете до нея през конзолата. Това действие се извършва само за няколко минути:


Ако не можете да определите местоположението, когато изтривате, ще трябва сами да въведете пълния път, така че ще трябва да го знаете.

Метод 1: Стандартни команди на терминала

Командната обвивка на всяка Linux дистрибуция съдържа набор от основни помощни програми и инструменти, които ви позволяват да извършвате голямо разнообразие от действия със системни настройки и файлове, включително изтриване на директории. Има няколко такива помощни програми и всяка ще бъде най-полезна в определена ситуация.

rmdir команда

Първо, бих искал да засегна rmdir. Той е предназначен да почиства системата само от празни директории. Премахва ги за постоянно, а предимството на този инструмент е простотата на неговия синтаксис и липсата на грешки. В конзолата просто напишете rmdir folder , където папка— името на папката в текущото местоположение. Инструментът се активира с натискане на клавиш Въведете.

Нищо не ви пречи да посочите пълния път на директорията, ако не можете да навигирате до местоположението, което искате или не е необходимо. Тогава редът приема например следната форма: rmdir /home/user/folder/folder1 , където потребител- потребителско име, папкае родителската директория и папка1— папка за изтриване. Моля, имайте предвид, че трябва да има наклонена черта преди home, но в края на пътя не трябва да има наклонена черта.

rm команда

Предишният инструмент е един от компонентите на помощната програма rm. Първоначално е предназначено да изтрива файлове, но ако му дадете подходящия аргумент, ще изтрие и папката. Тази опция вече е подходяща за непразни директории; в този случай трябва да въведете rm -R folder (или пълния път до директорията) в конзолата. Обърнете внимание на аргумента - започва рекурсивно изтриване, т.е. засяга цялото съдържание на папката и себе си. Необходимо е да внимавате с главни и малки букви при въвеждане, защото - това е съвсем различен вариант.

Ако искате да покажете списък с всички изтрити файлове и папки, когато използвате rm, тогава ще трябва да промените малко реда. Влезте "терминал" rm -Rfv папка и след това активирайте командата.

След като изтриването приключи, ще се покаже информация за всички директории и отделни обекти, които преди са били разположени на посоченото място.

намери команда

На нашия уебсайт вече има материал с примери за използване на find в операционни системи, разработени на ядрото на Linux. Разбира се, там е представена само основната и най-полезна информация. Можете да се запознаете с него, като кликнете върху следната връзка, а сега предлагаме да разберете как работи този инструмент, когато трябва да изтриете директории.

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

Това завършва взаимодействието със стандартните конзолни помощни програми в Linux. Както можете да видите, има голям брой от тях и всеки е приложим в определени ситуации. Ако искате да се запознаете с други популярни отбори, прочетете нашия отделен материал на връзката по-долу.

Добър ден, скъпи читатели. Днес бих искал да говоря за изтриване на директория в PHP. Изглежда, че операцията не е сложна, но има някои нюанси. Нека да разгледаме начините за това.

PHP има функция за това rmdir(). Той приема като аргумент пътя до директорията, която искате да изтриете. Въпреки това, директорията трябва да е празна- това е основното условие (с изключение на факта, че потребителят, от който работи уеб сървърът, трябва да има права за запис в директорията). Ако файловете са поставени в директорията, ще получим грешка при извикване на функцията. Съответно стигаме до извода, че директорията преди да използва функцията rmdir()първо трябва да се почисти.

Онлайн съветват да напишем функция, която ще предава като аргумент пътя до директорията, която трябва да изтрием. В тялото на функцията е необходимо да се организира списък на съдържанието на директорията, в рамките на който се извършва проверка дали файлът е директория. Ако файлът е директория, тогава функцията се извиква сама въз основа на това условие. Това е необходимо за почистване на вложени директории и ще работи на всички нива на влагане. В противен случай функцията се прилага към файла прекратяване на връзката ()- предназначен е за изтриване на файл. Извън тази проверка, в последната стъпка изтриваме директорията.

Примерно изпълнение:

Функция recursiveRemoveDir($dir) ( $includes = glob($dir."/*"); foreach ($includes as $include) ( if(is_dir($include)) ( recursiveRemoveDir($include); ) else ( unlink( $include); ) ) rmdir($dir); ) //Премахване на tmp директорията от текущата директория recursiveRemoveDir("tmp");
Какви проблеми има този код?

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

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

В резултат на това функцията приема следната форма:

Функция 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, който по подразбиране вече има нужните ни настройки. Пътят до директорията, чийто листинг ни трябва, се предава на конструктора. Просто трябва да създадем обект.

Функция 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: не успя да премахне `test": Директорията не е празна

2. Как да изтрия вложени директории в Linux?

Използвайки опцията -стрможете да изтриете директория с поддиректория, вложена в нея.

$ rmdir -p dir1/dir2/dir3

Екип rmdir -p dir1/dir2/dir3това е еквивалентът на командата

$ rmdir dir1/dir2/dir3 dir1/dir2 dir1

3. Изтриване на директорията със съдържание

Ако трябва да изтриете директория със съдържание, можете да използвате командата rm:

$ rm -rf ИМЕ НА ДИРЕКТОРА

Тази команда ще изтрие директория, включително всички файлове и поддиректории, които съдържа. Използвайте тази команда с повишено внимание, тъй като възстановяването на изтрити файлове няма да е лесна процедура.

4. Интерактивно премахване

За да избегнете случайно изтриване на необходимите файлове, препоръчвам да обмислите използването на опцията -i за интерактивно изтриване на файлове и папки (особено с root права).

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

# rm -ir ИМЕ НА ДИРЕКЦИЯ

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

# rm -i ИМЕ НА ФАЙЛ

5. Полезни псевдоними за командите rm и rmdir

Можете да използвате интерактивно изтриване като поведение по подразбиране на командата rm.

Псевдоним за постоянно интерактивно изпълнение на rm

# псевдоним rm="rm -i"

При използване на командата rmкомандата действително ще бъде изпълнена rm -i. Но трябва да обърнете внимание на един нюанс. Не използвайте опцията -i в бъдеще, тъй като няма да получите желания ефект. Да разгледаме един пример:

В следващата команда използването на -i няма да ви даде очаквания ефект.

$ rm -irf ИМЕ НА ДИРЕКТОРА

В този случай, когато използвате псевдоним, горната команда трябва да се изпълни, както следва:

$ rm -rf ИМЕ НА ДИРЕКТОРА

Всички команди по-долу са еквивалентни и изпълняват една и съща функция.

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

Ако имате нужда от експертна оценка на сграда, препоръчвам да поръчате проверка на готови сгради от специалисти от научно-производствения център Технопласт