3 leiðir til að eyða öllum skrám í möppu nema einni eða fáum skrám með viðbótum
Stundum lendirðu í aðstæðum þar sem þú þarft að eyða öllum skrám í möppu eða einfaldlega hreinsa möppu með því að fjarlægja allar skrár nema skrár af tiltekinni gerð (endar með tiltekinni viðbót).
Í þessari grein munum við sýna þér hvernig á að eyða skrám í möppu nema ákveðnar skráarendingar eða -gerðir með því að nota rm, find og globignore skipanir.
Áður en lengra er haldið skulum við byrja á því að kíkja stuttlega á eitt mikilvægt hugtak í Linux - samsvörun skráarnafna, sem gerir okkur kleift að takast á við vandamál okkar.
Í Linux er skeljamynstur strengur sem samanstendur af eftirfarandi sérstöfum, sem vísað er til sem jokertákn eða metatákn:
*
– passar við núll eða fleiri stafi?
– passar við einhvern stakan staf[seq]
– passar við hvaða staf sem er í seq[!seq]
– passar við hvaða staf sem er ekki í seq
Það eru þrjár mögulegar aðferðir sem við munum kanna hér, og þar á meðal:
Eyða skrám með því að nota útbreidda mynstursamsvörun
Hinir ýmsu útbreiddu mynstursamsvörun rekstraraðilar eru taldir upp hér að neðan, þar sem mynstur-listi er listi sem inniheldur eitt eða fleiri skráarnöfn, aðskilin með |
stafnum:
*(mynstur-listi)
– passar við núll eða fleiri tilvik af tilgreindum mynstrum?(pattern-list)
– passar við núll eða eitt tilvik af tilgreindum mynstrum- +(mynstur-listi) – passar við eitt eða fleiri tilvik af tilgreindum mynstrum
@(pattern-list)
– passar við eitt af tilgreindum mynstrum!(pattern-list)
– passar við allt nema eitt af tilteknum mynstrum
Til að nota þá, virkjaðu extglob skel valkostinn sem hér segir:
# shopt -s extglob
1. Til að eyða öllum skrám í möppu nema skráarnafni skaltu slá inn skipunina hér að neðan:
$ rm -v !("filename")
2. Til að eyða öllum skrám að undanskildum skráarnafni1 og skráarnafni2:
$ rm -v !("filename1"|"filename2")
3. Dæmið hér að neðan sýnir hvernig á að fjarlægja allar skrár aðrar en allar .zip
skrár gagnvirkt:
$ rm -i !(*.zip)
4. Næst geturðu eytt öllum skrám í möppu fyrir utan allar .zip
og .odt
skrár eins og hér segir, á meðan þú sýnir hvað er verið að gera:
$ rm -v !(*.zip|*.odt)
Þegar þú hefur allar nauðsynlegar skipanir skaltu slökkva á extglob skel valkostinum eins og svo:
$ shopt -u extglob
Eyða skrám með því að nota Linux find Command
Undir þessari aðferð getum við notað finna skipun eingöngu með viðeigandi valkostum eða í tengslum við xargs skipun með því að nota leiðslu eins og í eyðublöðunum hér að neðan:
$ find /directory/ -type f -not -name 'PATTERN' -delete $ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm {} $ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm [options] {}
5. Eftirfarandi skipun mun eyða öllum skrám fyrir utan .gz
skrár í núverandi möppu:
$ find . -type f -not -name '*.gz'-delete
6. Með því að nota leiðslu og xargs geturðu breytt málinu hér að ofan sem hér segir:
$ find . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}
7. Við skulum skoða eitt dæmi til viðbótar, skipunin hér að neðan mun eyða öllum skrám að undanskildum .gz
, .odt
og .jpg
skrám í núverandi möppu:
$ find . -type f -not \(-name '*gz' -or -name '*odt' -or -name '*.jpg' \) -delete
Eyða skrám með Bash GLOBIGNORE breytu
Þessi síðasta aðferð virkar þó aðeins með bash. Hér geymir GLOBIGNORE breytan með ristli aðskilinn mynsturlista (skráarheiti) til að hunsa með stækkun slóðnafna.
Til að nota þessa aðferð, farðu inn í möppuna sem þú vilt hreinsa upp, stilltu síðan GLOBIGNORE breytuna sem hér segir:
$ cd test $ GLOBIGNORE=*.odt:*.iso:*.txt
Í þessu tilviki verða allar skrár aðrar en .odt
, .iso
og .txt
skrár fjarlægðar úr núverandi möppu.
Keyrðu nú skipunina til að hreinsa upp möppuna:
$ rm -v *
Slökktu síðan á GLOBIGNORE breytu:
$ unset GLOBIGNORE
Athugasemd: Til að skilja merkingu fánanna sem notaðir eru í skipunum hér að ofan, skoðaðu handsíður hverrar skipunar sem við höfum notað í hinum ýmsu myndum.
Það er allt og sumt! Ef þú hefur einhverjar aðrar skipanalínutækni í huga í sama tilgangi, ekki gleyma að deila með okkur í gegnum athugasemdahlutann okkar hér að neðan.