Si të fshini skedarët dhe drejtoritë në terminalin Linux? Komanda RMDIR (RD) – fshini një direktori të sistemit të skedarëve Windows Fshini një dosje në Linux nga tastiera


Komandat rm dhe rmdir fshijnë skedarët dhe drejtoritë në Linux, macOS dhe sisteme të tjera operative të ngjashme me Unix. Ato janë të ngjashme me komandat del dhe deltree në Windows dhe DOS. Këto komanda janë shumë të fuqishme dhe kanë mjaft opsione.

Është e rëndësishme të theksohet se skedarët dhe drejtoritë e fshira duke përdorur rm dhe rmdir nuk zhvendosen në koshin e riciklimit. Ato hiqen menjëherë nga kompjuteri juaj. Nëse i keni fshirë aksidentalisht skedarët duke përdorur këto komanda, do të jeni në gjendje t'i rivendosni ato vetëm nga një kopje rezervë.

Si të fshini skedarët duke përdorur rm

Rasti më i thjeshtë është fshirja e një skedari të vetëm në drejtorinë aktuale. Shkruani komandën rm, një hapësirë, dhe më pas emrin e skedarit që dëshironi të fshini.

Rm file_1.txt

Nëse skedari nuk është në drejtorinë aktuale të punës, jepni shtegun për vendndodhjen e skedarit.

Rm ./path/to/the/file/file_1.txt

Ju mund të kaloni më shumë se një emër skedari në rm. Kjo fshin të gjithë skedarët e specifikuar.

Rm file_2.txt file_3.txt

Shenjat e egra mund të përdoren për të zgjedhur grupe skedarësh që do të fshihen. Shenjë * përfaqëson karaktere të shumta, dhe personazhin ? përfaqëson një personazh. Kjo komandë do të fshijë të gjithë skedarët e imazhit png në drejtorinë aktuale të punës.

Rm * .png

Kjo komandë do të fshijë të gjithë skedarët me të njëjtën shtrirje karakteresh. Për shembull, kjo do të fshijë File.1 dhe File.2, por jo File.12.

Rm *.?

Nëse skedari është i mbrojtur nga shkrimi, do t'ju kërkohet të fshini skedarin. Ju duhet të përgjigjeni me y ose n dhe shtypni "Enter".

Për të zvogëluar rrezikun e përdorimit të rm me shkronja të ngurta, përdorni opsionin -i(interaktive). Për ta bërë këtë, duhet të konfirmoni fshirjen e secilit skedar.

Rm -i * .dat

Opsioni -f(forca) është e kundërta e interaktive. Nuk kërkon konfirmim edhe nëse skedarët janë të mbrojtur nga shkrimi.

Emri i skedarit Rm -f

Si të hiqni drejtoritë duke përdorur rm

Për të hequr një drejtori bosh, përdorni opsionin -d(drejtori). Ju mund të përdorni shkronja të egra (* dhe ?) në emrat e drejtorive, ashtu si mundeni në emrat e skedarëve.

Drejtoria Rm -d

Sigurimi i më shumë se një emri direktoriumi heq të gjitha drejtoritë boshe të specifikuara.

Rm -d direktoria12 /rruga/to/directory3

Për të hequr drejtoritë jo bosh, përdorni opsionin -r(rekurzive). Për të qenë të qartë, kjo fshin drejtoritë dhe të gjithë skedarët dhe nëndrejtoritë që gjenden brenda tyre.

Rm -r directory1 directory2 directory3

Nëse drejtoria ose skedari është i mbrojtur nga shkrimi, do t'ju kërkohet të konfirmoni fshirjen. Për të hequr drejtoritë jo bosh dhe për të shtypur këto kërkesa, përdorni opsionet së bashku -r(rekurzive) dhe -f(i detyruar).

Drejtoria Rm -rf

Këtu kërkohet kujdes. Gabim komandimi rm -rf mund të rezultojë në humbje të të dhënave ose mosfunksionim të sistemit. Kjo është e rrezikshme dhe kujdesi është politika më e mirë. Për të marrë një ide mbi strukturën e drejtorisë dhe skedarët që do të fshihen nga rm -rf, përdorni komandën e pemës.

Përdorni apt-get për të instaluar këtë paketë në sistemin tuaj nëse jeni duke përdorur Ubuntu ose një shpërndarje tjetër të bazuar në Debian. Në shpërndarjet e tjera Linux, përdorni mjetin e menaxhimit të paketave të shpërndarjes suaj Linux.

Pema e instalimit Sudo apt-get

Ekzekutimi i komandës së pemës prodhon një diagramë të lehtë për t'u kuptuar të strukturës së drejtorisë dhe skedarëve nën drejtorinë nga e cila drejtohet.

Ju gjithashtu mund të specifikoni shtegun për në komandën e pemës në mënyrë që të ekzekutojë pemën nga një drejtori tjetër në sistemin e skedarëve.

Rruga/drejt/drejtoria e pemës

Komanda rm gjithashtu ka opsione --one-file-system, --no-preserve-root, --preserve-root, por këto rekomandohen vetëm për përdoruesit e avancuar. Nëse bëni diçka të gabuar, mund të fshini aksidentalisht të gjithë skedarët e sistemit tuaj.

Si të hiqni drejtoritë duke përdorur rmdir

Ekziston një komandë tjetër, rmdir, që mund ta përdorni për të hequr drejtoritë. Dallimi midis rm dhe rmdir është se rmdir mund të fshijë vetëm drejtoritë boshe. Nuk do të fshijë kurrë skedarët.

Rasti më i thjeshtë është fshirja e një drejtorie boshe. Ashtu si me rm , ju mund të kaloni emra të shumëfishtë të drejtorive te rmdir ose rmdir një shteg drejtorie.

Hiqni një direktori në drejtorinë aktuale duke kaluar emrin e saj në rmdir:

Drejtoria Rmdir

Hiqni direktori të shumta duke kaluar një listë emrash në rmdir:

Drejtoria Rmdir1 direktoria2 drejtoria3

Hiqni një drejtori që nuk është në drejtorinë aktuale duke specifikuar shtegun e plotë për në atë drejtori:

Rmdir /rruga/në/directory

Nëse përpiqeni të fshini një dosje që nuk është bosh, rmdir do t'ju japë një mesazh gabimi. Në shembullin e mëposhtëm, rmdir fshin me sukses dhe në heshtje direktorinë e klientëve, por refuzon të fshijë drejtorinë e projekteve sepse përmban skedarë. Drejtoria e projekteve mbetet saktësisht siç ishte, dhe skedarët në të janë të paprekur.

Kur rmdir lëshon një gabim "Direktoria nuk është bosh", ai ndalon përpunimin e drejtorive që i kalohen në vijën e komandës. Nëse keni kërkuar të fshini katër drejtori dhe i pari përmban skedarë, rmdir do t'ju japë një mesazh gabimi dhe nuk do të bëjë asgjë tjetër. Ju mund ta detyroni atë të injorojë këto gabime me --ignore-fail-on-non-empty për të përpunuar drejtoritë e tjera.

Në shembullin e mëposhtëm, dy dosje janë transferuar në rmdir, ato janë puna/raportet dhe puna/citimet. Opsioni --ignore-fail-on-non-empty përfshihet në komandë. Dosja e punës/raporteve përmban skedarë, kështu që rmdir nuk mund ta fshijë atë. Opsioni --ignore-fail-on-non-empty bën që rmdir të injorojë gabimin dhe të kalojë në dosjen tjetër që duhet të përpunojë, që është puna/citimet. Kjo është një dosje bosh dhe rmdir e fshin atë.

Kjo komandë është përdorur.

Rmdir --injoroj-fail-on-non-space work/raports /work/quotes

Mund të përdorni opsionin -fq(prind) për të hequr një direktori dhe gjithashtu për të hequr drejtoritë e saj mëmë. Ky truk funksionon sepse rmdir fillon në drejtorinë e synuar dhe më pas kthehet te prindi. Kjo direktori tani duhet të jetë bosh në mënyrë që të mund të hiqet nga rmdir dhe procesi përsërit hapin prapa përgjatë shtegut të ofruar nga rmdir.

Në shembullin e mëposhtëm, komanda e kaluar në rmdir është:

Rmdir -p pune/fatura

Faturat dhe drejtoritë e punës fshihen sipas kërkesës.

A po përdorni Bash apo ndonjë predhë tjetër? Linux ofron komanda fleksibël dhe të fuqishëm për fshirjen e drejtorive dhe skedarëve direkt nga linja e komandës së terminalit. Disa njerëz preferojnë të kenë një rrjedhë pune që rrotullohet rreth një terminali. Të tjerët mund të mos kenë zgjidhje në këtë çështje. Ato mund të funksionojnë në serverë pa një GUI të instaluar, ose në një seancë të largët në një sistem të pavarur siç është Raspberry Pi. Këto ekipe janë perfekte për këtë grup njerëzish.

Por çfarëdo lloji i rrjedhës së punës që preferoni, këto komanda janë shumë të mira për t'u përfshirë në skriptet e guaskës. Nëse skripti drejtohet nga një punë cron, ai mund të ndihmojë në automatizimin e detyrave rutinë të mbajtjes së shtëpisë, të tilla si pastrimi i skedarëve të padëshiruar të regjistrit. Nëse jeni duke eksploruar këtë rast përdorimi, jini të vetëdijshëm për fuqinë e këtyre komandave, kontrolloni gjithçka me kujdes dhe mbani gjithmonë një kopje rezervë të fundit.

Linja e komandës është një mjet i fuqishëm për automatizimin dhe thjeshtimin e shumë prej detyrave që lindin kur administroni një kompjuter që ekzekuton sistemin operativ Windows. Në këtë artikull do të shikojmë komandat DEL, ERASE, RD dhe RMDIR. Me ndihmën e tyre, ju mund të fshini skedarët dhe dosjet direkt nga rreshti i komandës.

Nëse ju duhet të fshini një skedar përmes , atëherë duhet të përdorni komandën DEL ose ERASE. Këto komanda janë sinonime dhe funksionojnë njësoj. Ju mund të merrni informacion të detajuar në lidhje me këto komanda nëse i futni në vijën e komandës me "/? " Për shembull, mund të shkruani "del/? " dhe të gjitha informacionet bazë rreth komandës del do të shfaqen në tastierë.

Komanda DEL (ose ERASE) është krijuar për të fshirë një ose më shumë skedarë dhe mund të pranojë parametrat e mëposhtëm:

  • /P – fshirje me një kërkesë konfirmimi për çdo skedar;
  • /F – fshirja e skedarëve me atributin "vetëm për lexim";
  • /S – fshin skedarin e specifikuar nga të gjitha nëndosjet;
  • /Q – fshirje pa kërkesë konfirmimi;
  • /A – fshirja e skedarëve sipas atributeve të tyre;

    • S - Sistemi;
    • H - Fshehur;
    • R – Vetëm lexim;
    • A - Për arkivim
    • Ju gjithashtu mund të përdorni shenjën minus "-" përpara atributeve, që ka kuptimin "NUK". Për shembull, "-S" do të thotë një skedar jo-sistem.

Në mënyrë tipike, për të përdorur komandën DEL, së pari duhet të shkoni te dosja ku ndodhet skedari që do të fshihet dhe më pas të ekzekutoni komandën. Për të ndryshuar diskun, mjafton të futni shkronjën e diskut dhe dy pika. Dhe për të lëvizur nëpër dosje, duhet të përdorni komandën "CD".

Pasi të jeni në dosjen e dëshiruar, mund të filloni të fshini skedarët. Për ta bërë këtë, thjesht futni komandën DEL dhe emrin e skedarit.

Gjithashtu, nëse është e nevojshme, mund të fshini skedarët pa lundruar nëpër dosje. Në këtë rast, duhet të specifikoni rrugën e plotë të dokumentit.

Nëse ka nevojë për të kryer një kërkesë për të konfirmuar fshirjen e secilit prej skedarëve të tyre, atëherë parametri "/p" duhet të shtohet në komandën DEL. Në këtë rast, linja e komandës do t'ju kërkojë të fshini skedarin dhe përdoruesi do të duhet të fusë shkronjën "Y" për ta konfirmuar.

Duhet të theksohet se kur përdorni parametrin "/a", shkronjat përgjegjëse për atributet duhet të futen të ndara me dy pika. Për shembull, për të fshirë të gjithë skedarët me atributin "vetëm për lexim" dhe me shtrirjen "txt", duhet të futni komandën " del /F /A:R *.txt ".

Ju mund të shtoni parametra të tjerë në komandën DEL në një mënyrë të ngjashme. Duke i kombinuar ato mund të krijoni komanda shumë të fuqishme për fshirjen e skedarëve përmes linjës së komandës së Windows. Më poshtë po japim disa shembuj të tjerë:

  • del D:\ - shkatërron të gjithë skedarët në rrënjën e diskut D;
  • del D:\*.txt – shkatërrimi i të gjithë skedarëve me shtrirjen txt në rrënjën e diskut D;
  • del D:\doc – shkatërrimi i të gjithë skedarëve në dosjen d:\doc (dokumentet me atribute do të anashkalohen);
  • del /A:r d:\doc\*.txt – shkatërrimi i të gjithë skedarëve me atributin “read-only” dhe zgjerimin “txt” në dosjen d:\doc;

Fshirja e dosjeve përmes vijës së komandës

Nëse keni nevojë të fshini një dosje përmes vijës së komandës së Windows, atëherë komandat e mësipërme nuk do t'ju ndihmojnë. Për të hequr dosjet, ekziston një komandë e veçantë RD ose RMDIR (shkurt për Remove Directory).

Komandat RD dhe RMDIR janë sinonime dhe synojnë të fshijnë dosjet. Ata mund të pranojnë parametrat e mëposhtëm:

  • /S - fshin të gjithë pemën e drejtorisë; kur përdorni këtë parametër, jo vetëm dosja do të fshihet, por edhe e gjithë përmbajtja e saj;
  • /Q – fshirja e një peme dosjesh pa kërkuar konfirmim;

Për shembull, për të fshirë një dosje, thjesht futni komandën RD dhe emrin e dosjes.

Nëse një dosje përmban nëndosje ose skedarë, do të shfaqet një gabim kur e fshini atë."

Për të zgjidhur këtë problem, duhet të shtoni parametrin "/s" në komandën RD. Në këtë rast, fshirja vazhdon pa probleme, por shfaqet një kërkesë për të konfirmuar fshirjen.

Në mënyrë që pema e dosjeve të fshihet pa u shfaqur një kërkesë konfirmimi, duhet të shtoni parametrin "/q" në komandë. Në këtë rast, dosja fshihet pa bërë asnjë pyetje.

Gjithashtu, komanda RD mund të pranojë disa dosje menjëherë; për ta bërë këtë, thjesht duhet t'i ndani ato me një hapësirë. Për shembull, nëse ekzekutoni "rd 111 222", atëherë mund të fshini dosjet me emrin "111" dhe "222" njëherësh.

Nëse ju duhet të fshini një dosje përmes vijës së komandës që përmban një hapësirë, atëherë në këtë rast emri i saj duhet të mbyllet në thonjëza të dyfishta.

Duke kombinuar komandat DEL dhe RD, mund të krijoni skripta të fuqishëm për të pastruar dhe fshirë dosjet në sistemin operativ Windows.

Sistemet operative të bazuara në kernel Linux zakonisht ruajnë një numër të madh drejtorish bosh dhe jo bosh. Disa prej tyre zënë një hapësirë ​​mjaft të madhe të ruajtjes dhe shpesh bëhen të panevojshme. Në këtë rast, opsioni i duhur do të ishte heqja e tyre. Ka disa mënyra për të kryer pastrim, secila prej tyre është e zbatueshme në një situatë specifike. Le të shohim më në detaje të gjitha metodat e disponueshme dhe ju do të zgjidhni më të përshtatshmet në bazë të nevojave tuaja.

Në këtë artikull, ne do të flasim për shërbimet e tastierës dhe mjetet shtesë që lëshohen duke futur komanda. Sidoqoftë, mos harroni se predha grafike shpesh zbatohen në shpërndarje. Prandaj, për të fshirë një drejtori, thjesht duhet të shkoni në të përmes menaxherit të skedarëve, klikoni me të djathtën mbi ikonën dhe zgjidhni "Fshi". Mos harroni të zbrazni plehrat më pas. Megjithatë, ky opsion nuk do të jetë i zbatueshëm për të gjithë përdoruesit, ndaj ju rekomandojmë të lexoni udhëzuesit e mëposhtëm.

Para se të filloni të shikoni metodat, është e rëndësishme të theksohet se kur futni një komandë, më shpesh do të tregoni në mënyrë të pavarur emrin e dosjes që dëshironi të fshini. Kur nuk jeni në vendndodhjen e tij, duhet të jepni rrugën e plotë. Nëse është e mundur, ju rekomandojmë të gjeni direktorinë mëmë të objektit dhe të shkoni tek ai përmes tastierës. Ky veprim përfundon në vetëm pak minuta:


Nëse nuk jeni në gjendje të përcaktoni vendndodhjen, gjatë fshirjes do të duhet të futni vetë shtegun e plotë, kështu që duhet ta dini.

Metoda 1: Komandat standarde të terminalit

Predha komanduese e çdo shpërndarjeje Linux përmban një sërë shërbimesh dhe mjetesh bazë që ju lejojnë të kryeni një shumëllojshmëri të gjerë veprimesh me cilësimet dhe skedarët e sistemit, duke përfshirë fshirjen e drejtorive. Ka disa shërbime të tilla dhe secila do të jetë më e dobishme në një situatë të caktuar.

komanda rmdir

Para së gjithash, do të doja të prekja rmdir. Është krijuar për të pastruar sistemin vetëm nga drejtoritë boshe. I heq ato përgjithmonë, dhe avantazhi i këtij mjeti është thjeshtësia e sintaksës së tij dhe mungesa e ndonjë gabimi. Në tastierë, thjesht shkruani dosjen rmdir , ku dosje— emri i dosjes në vendndodhjen aktuale. Mjeti aktivizohet duke shtypur një buton Hyni.

Asgjë nuk ju ndalon të specifikoni shtegun e plotë të drejtorisë nëse nuk mund të lundroni në vendndodhjen që dëshironi ose nuk keni nevojë. Pastaj rreshti merr, për shembull, formën e mëposhtme: rmdir /home/user/folder/folder1 , ku përdorues- Emri i përdoruesit, dosjeështë drejtoria mëmë, dhe dosje 1- dosje për të fshirë. Ju lutemi vini re se duhet të ketë një vijë të pjerrët përpara shtëpisë, por në fund të shtegut nuk duhet të ketë asnjë të pjerrët.

komanda rm

Mjeti i mëparshëm është një nga komponentët e mjetit rm. Fillimisht synohet të fshijë skedarët, por nëse i jepni argumentin e duhur, do të fshijë edhe dosjen. Ky opsion është tashmë i përshtatshëm për drejtoritë jo të zbrazëta; në këtë rast, duhet të futni dosjen rm -R (ose shtegun e plotë për në drejtori) në tastierë. Vini re argumentin -R- fillon një fshirje rekursive, domethënë, ndikon në të gjithë përmbajtjen e dosjes dhe vetveten. Është e nevojshme të jeni sensitive kur hyni sepse -r- ky është një opsion krejtësisht i ndryshëm.

Nëse dëshironi të shfaqni një listë të të gjithë skedarëve dhe dosjeve të fshira kur përdorni rm, atëherë do t'ju duhet të modifikoni pak rreshtin. Hyni brenda "Terminal" Dosja rm -Rfv dhe më pas aktivizoni komandën.

Pasi të përfundojë fshirja, do të shfaqen informacione për të gjitha drejtoritë dhe objektet individuale që ishin vendosur më parë në vendndodhjen e specifikuar.

gjeni komandën

Faqja jonë e internetit tashmë ka materiale me shembuj të përdorimit të gjeni në sistemet operative të zhvilluara në kernelin Linux. Natyrisht, vetëm informacioni bazë dhe më i dobishëm është paraqitur atje. Ju mund të njiheni me të duke klikuar në lidhjen e mëposhtme dhe tani ne propozojmë të zbuloni se si funksionon ky mjet kur duhet të fshini drejtoritë.

  1. Siç dihet, Gjej shërben për kërkimin e objekteve brenda sistemit. Falë përdorimit të opsioneve shtesë, mund të gjeni direktori me një emër specifik dhe t'i fshini ato menjëherë. Për ta bërë këtë, futni gjeni në tastierë. -type d -emri "folder" -exec rm -rf () \;, ku folder është emri i drejtorisë. Sigurohuni që të shkruani thonjëza të dyfishta kur e bëni këtë.
  2. Një linjë e veçantë ndonjëherë shfaq informacionin se një skedar ose drejtori i tillë nuk ekziston, por kjo nuk do të thotë se nuk u gjet. Vetëm Gjej funksionoi përsëri pas fshirjes së drejtorisë nga sistemi.
  3. find ~/ -empty -type d -delete ju lejon të fshini të gjitha dosjet bosh në sistem. Disa prej tyre janë të aksesueshme vetëm për superpërdoruesin, pra më parë Gjej sudo duhet shtuar.
  4. Të dhënat për të gjitha objektet e gjetura dhe suksesi i operacionit do të shfaqen në ekran.
  5. Ju gjithashtu mund të specifikoni vetëm një drejtori specifike për mjetin për të kërkuar dhe pastruar. Pastaj rreshti do të duket, për shembull, kështu: gjeni /home/user/Folder/ -empty -type d -delete .

Kjo kompleton ndërveprimin me shërbimet standarde të tastierës në Linux. Siç mund ta shihni, ka një numër të madh të tyre dhe secila është e zbatueshme në situata të caktuara. Nëse dëshironi të njiheni me ekipe të tjera të njohura, lexoni materialin tonë të veçantë në lidhjen më poshtë.

Ditë të mbarë, të dashur lexues. Sot do të doja të flisja për fshirjen e një drejtorie në PHP. Duket se operacioni nuk është i ndërlikuar, por ka disa nuanca. Le të shohim mënyrat për ta bërë këtë.

PHP ka një funksion për këtë rmdir (). Merr si argument shtegun drejt drejtorisë që dëshironi të fshini. Megjithatë, drejtoria duhet të jetë bosh- ky është kushti kryesor (përveç faktit që përdoruesi nga i cili funksionon serveri në internet duhet të ketë të drejta shkrimi për direktorinë). Nëse skedarët vendosen në drejtori, do të marrim një gabim kur thërrasim funksionin. Prandaj, ne arrijmë në përfundimin se drejtoria para përdorimit të funksionit rmdir () duhet pastruar fillimisht.

Online ata këshillojnë të shkruajmë një funksion që do të kalojë si argument rrugën drejt drejtorisë që duhet të fshijmë. Në trupin e funksionit, është e nevojshme të organizohet një listë e përmbajtjeve të drejtorisë, në kuadrin e së cilës bëhet një kontroll për të përcaktuar nëse skedari është një drejtori. Nëse skedari është një direktori, atëherë funksioni thërret veten bazuar në këtë kusht. Kjo është e nevojshme për të pastruar drejtoritë e mbivendosur dhe do të funksionojë në të gjitha nivelet e foleve. Përndryshe, funksioni aplikohet në skedar shkëput ()- është krijuar për të fshirë një skedar. Jashtë këtij kontrolli, në hapin e fundit ne fshijmë direktorinë.

Shembull i zbatimit:

Funksioni recursiveRemoveDir($dir) ( $includes = glob($dir."/*"); foreach ($includes as $include) ( if(is_dir($include)) ( recursiveRemoveDir($include); ) other ( unlink( $include); ) ) rmdir($dir);) //Hiq direktoriumin tmp nga drejtoria aktuale rekursiveRemoveDir("tmp");
Çfarë problemesh ka ky kod?

Në raste të thjeshta, drejtoria me të gjitha bashkëngjitjet do të fshihet. Por supozoni se në drejtorinë tonë ekziston një skedar i fshehur që fillon me një pikë, për shembull, .htaccess. Funksioni glob ()është një zëvendësim i UNIX globit që nuk përfshin skedarë të fshehur (DOTFILES) si parazgjedhje. Për shembull, nëse shkojmë në terminalin nix dhe përdorim bash, do të hasim të njëjtin problem (po flasim për skedarë të fshehur brenda globit). Ekziston një komandë në bash për të zgjidhur këtë çështje: shopt -s dotglob- lejon zëvendësimin glob të skedarëve të fshehur. Në PHP, kjo mund të zgjidhet duke shtuar një parametër shtesë GLOB_BRACE Për glob () dhe zgjerimi i modelit nga parametri i parë i funksionit.

$përfshin = glob("tmp/(,.)*", GLOB_BRACE);
Dhe këtu ka gjithashtu një problem - do të hasim një lak të pafund, pasi grupi do të përfshijë vlera. dhe.. - që është direktoria aktuale dhe prind në nivel sistemi. Do të përfundojmë me një lak të pafund (dhe jo duke fshirë të gjitha drejtoritë mëmë) sepse. si pjesë e renditjes së paracaktuar, grupi i gjeneruar do të vijë i pari.. - domethënë, sa herë që do të hyjmë në të njëjtën direktori. Për të zgjidhur problemin, ne do të formojmë një grup nga këto drejtori të sistemit dhe, në një cikli, do të heqim indekset e tyre nga grupi kryesor. Ekziston edhe problemi i lidhjeve simbolike. Le të themi se drejtoria që fshihet përmban një lidhje me një drejtori tjetër, përmbajtjen e së cilës nuk jemi absolutisht të interesuar ta fshijmë. Për të zgjidhur problemin, përpara se të krijoni rekursion, është e nevojshme të kontrolloni që entiteti nuk është referencë.

Si rezultat, funksioni merr formën e mëposhtme:

Funksioni rekursiveRemoveDir($dir) ( $includes = glob($dir."/(,.)*", GLOB_BRACE); $systemDots = preg_grep("/\.+$/", $includes); foreach ($systemDots si $index => $dot) ( unset($includes[$index]); ) foreach ($includes as $include) ( if(is_dir($include) && !is_link($include)) ( recursiveRemoveDir($include); ) else ( unlink($include); ) ) rmdir($dir); ) //Hiq direktoriumin tmp nga rekursive direktoria aktualeRemoveDir("tmp");
Kodi po funksionon, por në fakt mund të ishte bërë më i thjeshtë. Në PHP ekziston një klasë FilesystemIterator, e cila si parazgjedhje ka tashmë cilësimet që na duhen. Rruga drejt drejtorisë, lista e së cilës na nevojitet i kalohet konstruktorit. Thjesht duhet të krijojmë një objekt.

Funksioni recursiveRemoveDir($dir) ( $includes = i ri FilesystemIterator($dir); foreach ($përfshin si $include) ( if(is_dir($include) && !is_link($include)) ( recursiveRemoveDir($include); ) tjetër ( unlink($include); ) ) rmdir($dir); ) //Hiq direktoriumin tmp nga rekursive direktoria aktualeRemoveDir("tmp");
Si përfundim, do të doja të shënoja një mënyrë më të shpejtë. Korrektësia e përdorimit të tij është shumë e dyshimtë - dërgoni komandën për ekzekutim në SHELL.

Sistemi ("rm -rf tmp");
Unë do të doja të tërhiqja vëmendjen tuaj për konsumin e lartë të memories dhe për faktin se administratorët shpesh ndalojnë përdorimin e funksioneve të tilla në server për arsye sigurie.

Tags: php, rmdir, glob, rekursion

Ekipi rmdir do të na ndihmojë të fshijmë një direktori bosh, domethënë një drejtori pa skedarë dhe dosje. Sintaksa e komandës është shumë e thjeshtë:

Rmdir DIRNAME

Nëse drejtoria nuk është bosh, do të shihni mesazhin e mëposhtëm të gabimit.

$ rmdir test rmdir: dështoi në heqjen e `test”: Drejtoria nuk është bosh

2. Si të fshini direktoritë e mbivendosur në Linux?

Duke përdorur opsionin -fq ju mund të fshini një direktori me një nëndrejtori të vendosur brenda tij.

$ rmdir -p dir1/dir2/dir3

Ekipi rmdir -p dir1/dir2/dir3 kjo është ekuivalenti i komandës

$ rmdir dir1/dir2/dir3 dir1/dir2 dir1

3. Fshirja e drejtorisë së përmbajtjes

Nëse keni nevojë të fshini një direktori me përmbajtje, mund të përdorni komandën rm:

$ rm -rf DIRNAME

Kjo komandë do të fshijë një direktori, duke përfshirë të gjithë skedarët dhe nëndrejtoritë që ai përmban. Përdoreni këtë komandë me kujdes, pasi rikuperimi i skedarëve të fshirë nuk do të jetë një procedurë e lehtë.

4. Heqja interaktive

Për të shmangur fshirjen aksidentale të skedarëve të nevojshëm, unë rekomandoj përdorimin e opsionit -i për të fshirë në mënyrë interaktive skedarë dhe dosje (veçanërisht me të drejtat rrënjësore).

Fshirja rekursive dhe interaktive e drejtorisë.

# rm -ir DIRNAME

Fshirja interaktive e skedarit.

# rm -i FILENAME

5. Pseudonimet e dobishme për komandat rm dhe rmdir

Ju mund të përdorni fshirjen interaktive si sjelljen e paracaktuar të komandës rm.

Pseudonim për ekzekutimin e vazhdueshëm të rm në mënyrë interaktive

# pseudonim rm="rm -i"

Kur përdorni komandën rm komanda në të vërtetë do të ekzekutohet rm -i. Por duhet t'i kushtoni vëmendje një nuance. Mos përdorni opsionin -i në të ardhmen pasi nuk do të merrni efektin e dëshiruar. Le të shohim një shembull:

Në komandën e mëposhtme, përdorimi i -i nuk do t'ju japë efektin e pritur..

$ rm -irf DIRNAME

Në këtë rast, kur përdorni një pseudonim, komanda e mësipërme duhet të ekzekutohet si më poshtë:

$ rm -rf DIRNAME

Të gjitha komandat e mëposhtme janë ekuivalente dhe kryejnë të njëjtin funksionalitet.

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

Nëse keni nevojë për një vlerësim ekspert të një ndërtese, ju rekomandoj të porosisni një inspektim të ndërtesave të përfunduara nga specialistë nga qendra e kërkimit dhe prodhimit Technoplast