Hanyoyi 3 don Share Duk Fayiloli a cikin Directory Ban da Fayiloli ɗaya ko kaɗan tare da kari


Wani lokaci kuna shiga cikin yanayin da kuke buƙatar share duk fayiloli a cikin kundin adireshi ko kuma kawai tsaftace kundin adireshi ta hanyar cire duk fayiloli banda fayiloli na nau'in da aka bayar (yana ƙarewa tare da takamaiman tsawo).

A cikin wannan labarin, za mu nuna muku yadda ake share fayiloli a cikin kundin adireshi sai dai wasu kari na fayil ko nau'ikan ta amfani da umarnin rm, nemo da globignore.

Kafin mu ci gaba, bari mu fara da ɗan ɗan duba mahimman ra'ayi guda ɗaya a cikin Linux - filename pattern matching, wanda zai ba mu damar magance matsalar mu a hannun.

A cikin Linux, ƙirar harsashi igiya ce da ta ƙunshi haruffa na musamman masu zuwa, waɗanda ake magana da su a matsayin kati ko alamomi:

  1. * - yayi daidai da sifili ko fiye da haruffa
  2. ? - yayi daidai da kowane harafi guda
  3. [seq] - yayi daidai da kowane hali a cikin seq
  4. [!seq] - yayi daidai da kowane harafi wanda baya cikin seq

Akwai hanyoyi guda uku masu yiwuwa za mu bincika a nan, kuma waɗannan sun haɗa da:

Share Fayiloli Ta Amfani da Extended Matching Pattern Operators

An jera manyan ma'aikatan da suka dace da tsari daban-daban a ƙasa, inda lissafin tsari shine jeri mai ɗauke da sunaye ɗaya ko fiye, waɗanda aka ware ta amfani da halayen |:

  1. *(jerin tsari) - yayi daidai da sifili ko fiye da abubuwan da suka faru na ƙayyadaddun alamu
  2. ?(jerin tsarin) - yayi daidai da sifili ko aukuwa ɗaya na ƙayyadaddun alamu
  3. +(jerin tsarin) - yayi daidai da ɗaya ko fiye abubuwan da suka faru na ƙayyadaddun alamu
  4. @(jerin tsari) - yayi daidai da ɗaya daga cikin ƙayyadaddun alamu
  5. !(jerin tsari) - yayi daidai da komai sai ɗaya daga cikin alamu da aka bayar

Don amfani da su, kunna zaɓin harsashi na extglob kamar haka:

# shopt -s extglob

1. Don share duk fayiloli a cikin kundin adireshi banda filename, rubuta umarnin da ke ƙasa:

$ rm -v !("filename")

2. Don share duk fayiloli ban da filename1 da filename2:

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

3. Misalin da ke ƙasa yana nuna yadda ake cire duk fayiloli ban da duk fayilolin .zip tare da mu'amala:

$ rm -i !(*.zip)

4. Na gaba, zaku iya goge duk fayiloli a cikin kundin adireshi ban da duk fayilolin .zip da .odt kamar haka, yayin nuna abin da ake yi:

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

Da zarar kuna da duk umarnin da ake buƙata, kashe zaɓin harsashi na extglob kamar haka:

$ shopt -u extglob

Share Fayiloli Amfani da Linux nemo Umurnin

A ƙarƙashin wannan hanyar, zamu iya amfani da nemo umarni na musamman tare da zaɓuɓɓukan da suka dace ko kuma tare da umarnin xargs ta amfani da bututun mai kamar a cikin fom ɗin da ke ƙasa:

$ 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. Umurni mai zuwa zai goge duk fayiloli baya ga fayilolin .gz a cikin kundin adireshi na yanzu:

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

6. Yin amfani da bututun bututu da xargs, zaku iya canza shari'ar da ke sama kamar haka:

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

7. Bari mu dubi ƙarin misali ɗaya, umarnin da ke ƙasa zai shafe duk fayiloli ban da fayilolin .gz, .odt, da fayilolin .jpg a cikin kundin adireshi na yanzu:

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

Share Fayiloli Ta Amfani da Bash GLOBIGNORE Mai Sauyawa

Wannan hanya ta ƙarshe duk da haka, tana aiki ne kawai tare da bash. Anan, madaidaicin GLOBIGNORE yana adana jerin abubuwan ƙira (sunayen fayil) waɗanda za a yi watsi da su ta hanyar faɗaɗa suna.

Don amfani da wannan hanyar, matsa zuwa cikin directory ɗin da kuke son tsaftacewa, sannan saita canjin GLOBIGNORE kamar haka:

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

A cikin wannan misali, duk fayilolin ban da .odt, .iso, da .txt fayiloli masu ɗauke da su ana cire su daga kundin adireshi na yanzu.

Yanzu gudanar da umarni don tsaftace kundin adireshi:

$ rm -v *

Bayan haka, kashe GLOBIGNORE m:

$ unset GLOBIGNORE

Lura: Don fahimtar ma'anar tutocin da aka yi amfani da su a cikin umarnin da ke sama, koma zuwa shafukan mutum na kowane umarni da muka yi amfani da su a cikin misalai daban-daban.

Shi ke nan! Idan kuna da wasu dabarun layin umarni a hankali don wannan dalili, kar ku manta ku raba tare da mu ta sashin ra'ayoyin mu da ke ƙasa.