Njia 3 za Kufuta Faili Zote kwenye Saraka Isipokuwa Faili Moja au Chache zilizo na Viendelezi


Wakati mwingine unaingia katika hali ambapo unahitaji kufuta faili zote kwenye saraka au tu kusafisha saraka kwa kuondoa faili zote isipokuwa faili za aina fulani (kuishia na ugani fulani).

Katika makala hii, tutakuonyesha jinsi ya kufuta faili kwenye saraka isipokuwa upanuzi fulani wa faili au aina kwa kutumia rm, find na globignore amri.

Kabla hatujasonga mbele zaidi, hebu tuanze kwa kuangalia kwa ufupi dhana moja muhimu katika Linux - ulinganishaji wa muundo wa jina la faili, ambao utatuwezesha kushughulikia suala letu lililo karibu.

Katika Linux, muundo wa ganda ni mfuatano ambao unajumuisha herufi maalum zifuatazo, ambazo hurejelewa kama kadi-mwitu au metacharacter:

  1. * – inalingana na vibambo sifuri au zaidi
  2. ? - inalingana na herufi yoyote
  3. [seq] - inalingana na herufi yoyote katika seq
  4. [!seq] - inalingana na herufi yoyote isiyo katika seq

Kuna njia tatu zinazowezekana ambazo tutachunguza hapa, na hizi ni pamoja na:

Futa Faili kwa Kutumia Viendeshaji Miundo Iliyoongezwa

Mchoro tofauti wa waendeshaji unaolingana zimeorodheshwa hapa chini, ambapo muundo-orodha ni orodha iliyo na jina la faili moja au zaidi, ikitenganishwa kwa kutumia | herufi:

  1. *(orodha ya muundo) - inalingana na sifuri au matukio zaidi ya ruwaza zilizobainishwa
  2. ?(orodha ya muundo) - inalingana na sufuri au tukio moja la ruwaza zilizobainishwa
  3. +(orodha ya muundo) - inalingana na tukio moja au zaidi la ruwaza zilizobainishwa
  4. @(orodha ya muundo) - inalingana na mojawapo ya mifumo iliyobainishwa
  5. !(orodha ya muundo) - inalingana na chochote isipokuwa ruwaza moja kati ya hizo

Ili kuzitumia, wezesha chaguo la ganda la extglob kama ifuatavyo:

# shopt -s extglob

1. Ili kufuta faili zote kwenye saraka isipokuwa jina la faili, andika amri hapa chini:

$ rm -v !("filename")

2. Kufuta faili zote isipokuwa filename1 na filename2:

$ rm -v !("filename1"|"filename2") 

3. Mfano ulio hapa chini unaonyesha jinsi ya kuondoa faili zote isipokuwa faili zote za .zip kwa maingiliano:

$ rm -i !(*.zip)

4. Kisha, unaweza kufuta faili zote katika saraka kando na faili zote za .zip na .odt kama ifuatavyo, huku ukionyesha kinachofanywa:

$ rm -v !(*.zip|*.odt)

Mara tu ukiwa na amri zote zinazohitajika, zima chaguo la ganda la extglob kama hivyo:

$ shopt -u extglob

Futa Faili Kwa Kutumia Linux find Amri

Chini ya njia hii, tunaweza kutumia find amri pekee na chaguzi zinazofaa au kwa kushirikiana na xargs amri kwa kuajiri bomba kama katika fomu hapa chini:

$ 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. Amri ifuatayo itafuta faili zote kando na faili za .gz katika saraka ya sasa:

$ find . -type f -not -name '*.gz'-delete

6. Kwa kutumia bomba na xargs, unaweza kurekebisha kesi hapo juu kama ifuatavyo:

$ find . -type f -not -name '*gz' -print0 | xargs -0  -I {} rm -v {}

7. Hebu tuangalie mfano mmoja wa ziada, amri iliyo hapa chini itafuta faili zote ukiondoa faili za .gz, .odt na .jpg faili katika saraka ya sasa:

$ find . -type f -not \(-name '*gz' -or -name '*odt' -or -name '*.jpg' \) -delete

Futa Faili kwa Kutumia Bash GLOBIGNORE Variable

Njia hii ya mwisho hata hivyo, inafanya kazi tu na bash. Hapa, lahaja la GLOBIGNORE huhifadhi orodha ya muundo iliyotenganishwa na koloni (majina ya faili) ili kupuuzwa na upanuzi wa jina la njia.

Ili kutumia njia hii, nenda kwenye saraka ambayo ungependa kusafisha, kisha weka utofauti wa GLOBIGNORE kama ifuatavyo:

$ cd test
$ GLOBIGNORE=*.odt:*.iso:*.txt

Katika tukio hili, faili zote kando na .odt, .iso na .txt zitaondolewa kwenye saraka ya sasa.

Sasa endesha amri ya kusafisha saraka:

$ rm -v *

Baadaye, zima utofauti wa GLOBIGNORE:

$ unset GLOBIGNORE

Kumbuka: Ili kuelewa maana ya bendera zilizotumika katika amri zilizo hapo juu, rejelea kurasa za mwanadamu za kila amri ambazo tumetumia katika vielelezo mbalimbali.

Ni hayo tu! Ikiwa una mbinu zingine za mstari wa amri akilini mwako kwa madhumuni sawa, usisahau kushiriki nasi kupitia sehemu yetu ya maoni hapa chini.