Paano tatanggalin ang lahat maliban sa isa sa mga file sa isang direktoryo

tanggalin ang mga Linux file

Minsan kailangan mo alisin ang halos lahat ng mga file mula sa isang direktoryo, ngunit nais mong panatilihin ang isa o ilan sa mga ito. Kapag maraming mga ito, ang pagpunta isa-isa ay isang nakakapagod na gawain. Hindi ito ang pinakamahusay na pagpipilian, may mga paraan upang gawing mas madali ang gawain sa Linux at maaari mong alisin ang lahat ng mga kailangan mo nang sabay-sabay.

Halimbawa, baka gusto mong alisin lamang ang mga nagsisimula sa isang tiyak na pangalan, o iyong may isang tukoy na extension, atbp. Lahat ng iyon ay posibleSa katunayan, sa ibang mga okasyon naipakita ko na ang mga katulad na tutorial sa LxA. Dito maaari mong sundin ang sunud-sunod na tutorial at sa isang simpleng paraan upang matanggal ang lahat ng mga file na gusto mo, maliban sa nais mong i-save.

At ang pinakamagandang bagay ay iyon hindi mo kakailanganing mag-install ng anumang programa, madali itong magagawa sa mga utos tulad ng rm at hanapin. Iyon ay, mga program na paunang naka-install sa anumang distro ng Linux. At syempre, ang pamamaraan ay ibabatay sa paghahanap ng mga pattern at paggamit ng mga laban na iyon upang alisin lamang ang gusto mo.

Kaya, upang maalis doon maraming mga kahalili, Ano ang mga ito ...

Alisin ang mga file mula sa isang direktoryo na may rm

Kaya, upang magamit ang utos ng rm Upang maalis kung ano ang gusto mo, kailangan mong malaman ang ilang mga paraan upang kilalanin muna ang mga pattern:

  • * (listahan ng mga pattern) - tumutugma sa zero o higit pang mga paglitaw ng tinukoy na mga pattern
  • ? (listahan ng mga pattern) - tumutugma sa zero o isang paglitaw ng mga tinukoy na pattern
  • + (listahan ng pattern) - tumutugma sa isa o higit pang mga paglitaw ng tinukoy na mga pattern
  • @ (listahan ng pattern) - tumutugma sa isa sa tinukoy na mga pattern
  • ! (listahan ng pattern) - tumutugma sa anumang bagay maliban sa isa sa mga ibinigay na mga pattern

Sa paganahin ang extglob Upang magamit ang mga ito, kailangan mo munang ipatupad ang sumusunod na utos:

<br data-mce-bogus="1">

shopt -s extglob<br data-mce-bogus="1">

mata! Hindi ko ito tinukoy, ngunit ipinapalagay na mayroon kang mga pahintulot na gawin ang mga pagpapatakbo na ito, at nasa loob ka ng direktoryong iyon kapag naisagawa mo ang utos na rm. Mag-ingat sa mga ito, dahil kung patakbuhin mo ito sa ibang landas, maaari kang magtapos sa pagtanggal ng mga file na hindi mo nais. Iyon ay, bago ipatupad ang mga utos na ito, siguraduhing naipasok mo ang direktoryo na gusto mo gamit ang cd.

Ngayon ay maaari mong gamitin ang rm upang alisin ang anumang nais mo. Halimbawa, tanggalin ang lahat ng mga file mula sa isang direktoryo maliban sa mga tumutugma sa pangalan «Lxa»:

rm -v !("lxa")

Maaari mo ring tukuyin dalawa o higit pang mga pangalan na hindi mo nais na tanggalin. Halimbawa, upang maiwasan ang pag-alis ng "lxa" at "desdelinux":

 rm -v !("lxa"|"desdelinux") 

Maaari mong tanggalin ang lahat ng mga file, minus mga may extension .mp3. Halimbawa:

 rm -v !(*.mp3) 

Sa huli, maaari kang bumalik sa huwag paganahin ang extglob:

 shopt -u extglob 

Alisin ang mga file mula sa isang direktoryo na may hanapin

Ang isa pang kahalili sa rm ay gamitin ang hanapin upang alisin ang anumang gusto mo. Maaari kang gumamit ng isang tubo at xargs na may rm, o gamitin ang -delete na pagpipilian upang makahanap. Iyon ay, ang pangkaraniwang syntax ay:

find /directory/ -type f -not -name 'PATRÓN' -delete
find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}

Halimbawa, isipin na gusto mo tanggalin ang lahat ng mga file sa isang direktoryo maliban sa mga may extension .jpg, maaari mong gamitin ang isa sa dalawang utos na ito, dahil pareho silang nakakuha ng parehong resulta:

find . -type f -not -name '*.jpg'-delete

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

Sa halip, kung nais mo magdagdag ng ilang dagdag na pattern, maaari mo rin. Halimbawa, ipagpalagay na hindi mo nais na alisin ang alinman sa .pdf o .odt mula sa isang direktoryo:

find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete

Siyempre, magagawa mo ang pareho sa | at xargs tulad ng sa nakaraang halimbawa. Siyanga pala, nagamit na namin -hindi tanggihan, ngunit maaari mong alisin iyon upang gawing positibo ito, iyon ay, upang alisin ang mga tumutugma na mga pattern at hindi ibukod ang mga ito.

Tanggalin ang mga file mula sa isang direktoryo gamit ang variable na GLOBIGNORE

Sa wakas, mayroon Isa pang kahalili upang hanapin at rm, at gumagamit ito ng variable ng kapaligiran upang ituro ang mga file na nais mong alisin o ibukod. Halimbawa, isipin na nais mong tanggalin ang lahat ng mga file sa isang direktoryo na tinatawag na Mga Pag-download, i-save ang .pdf, .mp3 at .mp4 na mga file. Sa kasong iyon, magagawa mo ang sumusunod:

cd Descargas
GLOBIGNORE=*.pdf:*.mp4:.*mp3
rm -v *
unset GLOBIGNORE


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.