Bir ýa-da giňeldilen az faýllardan başga katalogdaky ähli faýllary ýok etmegiň 3 usuly


Käwagt bir bukjadaky ähli faýllary pozmaly ýa-da belli bir görnüşdäki faýllardan başga (belli bir giňeltme bilen gutarýan) faýllary aýyrmak bilen bir bukjany arassalamaly bolýan ýagdaýa düşýärsiňiz.

Bu makalada, rm, tapmak we globignore buýruklaryny ulanyp, belli bir faýl giňeltmelerinden ýa-da görnüşlerinden başga katalogdaky faýllary nädip pozmalydygyny görkezeris.

Has öňe gitmezden ozal, Linux-daky bir möhüm düşünjä - elimizdäki meseläni çözmäge mümkinçilik berjek faýl adynyň gabat gelişine gysgaça göz aýlalyň.

Linux-da gabyk nagşy, ýabany kartoçkalar ýa-da metacharacterler diýlip atlandyrylýan aşakdaky ýörite nyşanlardan ybarat setirdir:

  1. * - nol ýa-da has köp nyşanlara gabat gelýär
  2. ? - islendik nyşan bilen gabat gelýär
  3. [seq] - seqdäki islendik nyşanlara gabat gelýär
  4. [! seq] - seq-de bolmadyk islendik nyşan bilen gabat gelýär

Bu ýerde öwrenip boljak üç mümkin usul bar we şulary öz içine alýar:

Giňeldilen nagyş gabat gelýän operatorlary ulanyp faýllary pozuň

Dürli giňeldilen nagyş gabat gelýän operatorlar aşakda görkezilýär, bu ýerde nagyş sanawy | nyşany bilen bölünen bir ýa-da birnäçe faýl adyny öz içine alýan sanawdyr:

  1. * (nagyş-sanaw) - görkezilen nagyşlaryň nol ýa-da has köp ýüze çykmagyna gabat gelýär
  2. ? (pattern-list) - nol ýa-da görkezilen nagyşlaryň bir hadysasyna gabat gelýär
  3. + (nagyş-sanaw) - görkezilen nagyşlaryň bir ýa-da birnäçe hadysasyna gabat gelýär
  4. @ (nagyş-sanaw) - görkezilen nagyşlaryň birine gabat gelýär
  5. ! (pattern-list) - berlen nagyşlaryň birinden başga zat gabat gelýär

Olary ulanmak üçin extglob gabyk görnüşini aşakdaky ýaly işlediň:

# shopt -s extglob

1. Faýlyň adyndan başga katalogdaky ähli faýllary ýok etmek üçin aşakdaky buýrugy ýazyň:

$ rm -v !("filename")

2. Filename1 we filename2-den başga ähli faýllary pozmak:

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

3. Aşakdaky mysal, ähli .zip faýllaryndan başga ähli faýllary interaktiw ýagdaýda nädip aýyrmalydygyny görkezýär:

$ rm -i !(*.zip)

4. Ondan soň, ýerine ýetirilýän zatlary görkezmek bilen, ähli .zip we .odt faýllaryndan başga katalogdaky ähli faýllary pozup bilersiňiz:

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

Requiredhli zerur buýruklary alanyňyzdan soň, extglob gabyk opsiýasyny öçüriň:

$ shopt -u extglob

Linux tapmak buýrugyny ulanyp faýllary pozuň

Bu usula laýyklykda, tapmak buýrugyny diňe degişli wariantlar bilen ýa-da aşakdaky görnüşlerdäki ýaly turbageçiriji ulanyp, xargs buýrugy bilen bilelikde ulanyp bileris:

$ 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. Aşakdaky buýruk häzirki katalogdaky .gz faýllaryndan başga ähli faýllary ýok eder:

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

6. Turbageçiriji we xargs ulanyp, ýokardaky ýagdaýy aşakdaky ýaly üýtgedip bilersiňiz:

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

7. Geliň, goşmaça bir meselä seredeliň, aşakdaky buýruk .gz , .odt we .jpg faýllaryndan başga ähli faýllary ýok eder. häzirki katalogda:

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

Baş GLOBIGNORE üýtgeýjisini ulanyp faýllary pozuň

Bu soňky çemeleşme, diňe baş bilen işleýär. Bu ýerde, GLOBIGNORE üýtgeýjisi, adyň giňelmegi bilen ünsden düşürilmeli sütün bilen bölünen nagyş sanawyny (faýl atlaryny) saklaýar.

Bu usuly ulanmak üçin, arassalamak isleýän katalogyňyza geçiň, soňra GLOBIGNORE üýtgeýjisini aşakdaky ýaly düzüň:

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

Bu ýagdaýda .odt , .iso we .txt faýllaryndan başga ähli faýllar häzirki katalogdan aýrylýar.

Indi katalogy arassalamak buýrugyny işlediň:

$ rm -v *

Ondan soň GLOBIGNORE üýtgeýjisini öçüriň:

$ unset GLOBIGNORE

Bellik: aboveokardaky buýruklarda ulanylýan baýdaklaryň manysyna düşünmek üçin dürli suratlarda ulanan her buýrugymyzyň adam sahypalaryna serediň.

Bu hemmesi! Şol bir maksat bilen başga bir buýruk setiriniň usuly bar bolsa, aşakdaky seslenme bölümimiz arkaly biziň bilen paýlaşmagy ýatdan çykarmaň.