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:
-
*
- nol ýa-da has köp nyşanlara gabat gelýär -
?
- islendik nyşan bilen gabat gelýär -
[seq]
- seqdäki islendik nyşanlara gabat gelýär -
[! 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:
-
* (nagyş-sanaw)
- görkezilen nagyşlaryň nol ýa-da has köp ýüze çykmagyna gabat gelýär -
? (pattern-list)
- nol ýa-da görkezilen nagyşlaryň bir hadysasyna gabat gelýär - + (nagyş-sanaw) - görkezilen nagyşlaryň bir ýa-da birnäçe hadysasyna gabat gelýär
-
@ (nagyş-sanaw)
- görkezilen nagyşlaryň birine gabat gelýär -
! (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ň.