Как да изтрия файлове и директории в Linux терминал? Как да изтриете файлове и директории с помощта на командния ред на Linux Изтриване на папки в linux.

Как да изтрия файл или папка от терминала?

За да изтриете файл или папка (и тук е правилно да говорим не за папки, а за директории) от терминала на Linux, използвайте командите rmИ rmdir, подобно на командите делИ делтрев cmd конзолата на Windows. Командите са прости и няма много опции. Това не е опция, към която обикновеният потребител ще прибегне, когато работи в напълно функционална система. Въпреки това, за тези, които изпълняват cron задачи с помощта на скрипт или когато работят от ремонтен терминал с повреден GUI, командите може да са полезни.

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

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

Най-простата команда за изтриване изглежда така

rm filepath/file.extension

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

Rm file1.txt file2.txt file3.txt

При масово изтриване на файлове успешно се използват и заместващи знаци. Както винаги в такива случаи, можете да използвате * И ? . Със звездичка обозначавате много символи, ? – неженен. Например, за да изтриете няколко снимки от избрана папка, можете да използвате:

Rm *.jpeg

Освен това заместващите знаци могат да се използват за маркиране както на имена на файлове, така и на разширения. За да изтриете например всички снимки с разширението jpeg, и чертежи с разширение pngнапуснете, можете да въведете командата във формата:

Rm *.????

Ако файлът, предназначен за изтриване, е защитен с ограничителни атрибути (като „само за четене“), терминалът ще поиска потвърждение. В случай, че все още искате да контролирате процеса на изтриване на файлове, допълнете командата с флага . Сега, за да изтриете всеки файл, ще трябва да потвърдите действието:

Ще трябва да се съгласите на английски:

Но. За разлика от знамето има знаме -f. Той е в отбора rmизтрийте всички файлове, дори ако са защитени от създателя или системата:

Rm -f File.txt

Как да изтрия папка от терминал с помощта на rm?

Екип rmМожете също така да се отървете от папки и директории. Но съдържанието на командата ще се различава в зависимост от съдържанието на изтритата директория. Така че, ако директорията е празна, командата ще изглежда така:

rm -d път към директория

Ако има нещо в директорията, променете флага на :

rm -r път към директория

Изтриваме защитената папка по познат начин:

rm -rf папка

Командата е толкова проста, колкото и опасна. Невнимателното му използване може да доведе до случайно презаписване на жизненоважни директории на Kali. Следователно, за да получите представа за състава на директория директно от терминала, можете първо да се запасите със скрипт за дървовидно показване на съдържанието на папките и директориите на Linux. Да инсталираме...

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

и да видим:

Как да изтрия папка от терминал с помощта на rmdir?

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

rmdir = rm -d

да Екип rmdirМожете да изтриете само празни директории. Също индивидуално или групово, като също така се посочва пълният път:

Rmdir папка1 папка2

Ако папката не е празна, rmdirще даде грешка:

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

Ignore-fail-on-non-empty

в началото на командата, така че масовото изтриване на празни (вероятно) директории да не спре веднага щом rmdirще попадне на непразна папка:

Rmdir --ignore-fail-on-non-empty folder1 folder2

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

rmdir -p директория/папка

Номерът ще проработи, защото rmdirзапочва да работи с целевата папка, като се движи „по команда“ нагоре в йерархичното дърво, изтривайки една папка след друга.

Добър ден, скъпи читатели. Днес бих искал да говоря за изтриване на директория в 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

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

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

Препоръките ще ви помогнат изтрийте напълно папка чрез командния ред. В статията за е използвана командата DEL, която е предназначена специално за файлове. В случай на папки са приложими командите RD или RMDIR.

За постигане на целта,. Въведете RD /? и бързо се запознайте с функциите и параметрите на командата. Тук ще видите само 2 параметъра:

  1. /s - при използване на този префикс папката ще бъде изтрита, както и всички нейни вложени елементи. Ако вашата директория не е празна и не сте посочили този параметър, тогава нищо няма да работи за вас.
  2. /Q - използва се при изтриване без потвърждение.

Като цяло дизайнът изглежда така:

RD или RMDIR /s/q „пълен път на папка“

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

Изтриване на папка със или без потвърждение

Създадох директория на моя компютър, наречена „cmd“ и копирах няколко обекта в нея. След това въведох следната команда в командния ред:

RD /s “c:\cmd”

След това натиснах Enter и клавиша Y, защото cmd ме подкани да потвърдя изтриването.

Проверих C устройството и не намерих директория. След това създадох папка с име „delete“ и също копирах 5 файла, но при въвеждане на командата премахнах префикса /s. Оказа се така:

RMDIR „c:\delete“

След натискане на Enter изтриването не се случи и на командния ред се изведе съобщение, че папката не е празна. Заключение, без параметъра /s можете да изтриете само празна папка, следователно използването й без този префикс е практически безполезно.

Ако ви мързи да въведете писмото за потвърждение (Y или N), тогава следната конструкция е за вас. Префиксът /q беше споменат по-горе; той премахва досадното писане на букви (вижте екранната снимка за доказателство).

Дял