Bir dizindeki dosyaların biri hariç tümü nasıl silinir

Linux dosyalarını sil

Bazen ihtiyacın var bir dizinden neredeyse tüm dosyaları kaldırınama bunlardan birini veya birkaçını saklamak istiyorsun. Çok sayıda olduğunda, tek tek gitmek sıkıcı bir iştir. En iyi seçenek değil, Linux'ta çalışmayı çok daha kolay hale getirmenin yolları var ve ihtiyacınız olan her şeyi tek seferde ortadan kaldırabilirsiniz.

Örneğin, yalnızca belirli bir adla başlayanları veya belirli bir uzantıya sahip olanları vb. Kaldırmak isteyebilirsiniz. Mümkün olan her şeyAslında, diğer durumlarda, benzer eğitimleri LxA'da zaten göstermiştim. Burada öğreticiyi adım adım ve basit bir şekilde, kaydetmek istedikleriniz dışında istediğiniz tüm dosyaları silebilmek için takip edebilirsiniz.

Ve en iyi şey şu ki herhangi bir program yüklemenize gerek yoktur, rm ve find gibi komutlarla kolaylıkla yapılabilir. Yani, herhangi bir Linux dağıtımına önceden yüklenmiş programlar. Ve elbette, yöntem kalıpları bulmaya ve bu eşleşmeleri yalnızca istediğinizi kaldırmak için kullanmaya dayanacaktır.

Peki, orayı ortadan kaldırabilmek için birkaç alternatif, Onlar neler…

Rm ile bir dizinden dosyaları kaldırın

Peki, kullanmak için rm komutu Nasıl hissettiğinizi ortadan kaldırmak için, kalıpları belirlemenin bazı yollarını bilmeniz gerekir:

  • * (desen listesi) - belirtilen modellerin sıfır veya daha fazla oluşumuyla eşleşir
  • ? (kalıp listesi) - belirtilen modellerin sıfır veya bir oluşumuyla eşleşir
  • + (kalıp listesi) - belirtilen modellerin bir veya daha fazla oluşumuyla eşleşir
  • @ (kalıp listesi) - belirtilen modellerden biriyle eşleşir
  • ! (desen listesi) - verilen kalıplardan biri dışında herhangi bir şeyle eşleşir

Daha extglob'u etkinleştir Bunları kullanmak için önce aşağıdaki komutu uygulamanız gerekir:

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

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

göz! Bunu belirtmiyorum, ancak bu işlemleri yapmak için izinleriniz olduğu ve rm komutunu çalıştırdığınızda o dizinin içinde olduğunuz varsayılıyor. Buna dikkat edin, çünkü başka bir yolda çalıştırırsanız, istemediğiniz dosyaları silebilirsiniz. Yani bu komutları çalıştırmadan önce istediğiniz dizini cd ile girdiğinizden emin olunuz.

Artık istediğinizi kaldırmak için rm'yi kullanabilirsiniz. Örneğin, adla eşleşenler dışındaki tüm dosyaları bir dizinden sil «Lxa»:

rm -v !("lxa")

Ayrıca belirtebilirsiniz silmek istemediğiniz iki veya daha fazla isim. Örneğin, "lxa" ve "desdelinux" u kaldırmamak için:

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

Tüm dosyaları silebilirsiniz, eksi uzantısı olanlar .mp3. Örneğin:

 rm -v !(*.mp3) 

Sonunda geri dönebilirsin extglob'u devre dışı bırak:

 shopt -u extglob 

Find ile bir dizinden dosyaları kaldırın

Rm'ye başka bir alternatif de ne istersen kaldırmak için bul'u kullan. Rm ile bir boru ve xargs kullanabilir veya bulmak için -delete seçeneğini kullanabilirsiniz. Yani genel sözdizimi şöyle olacaktır:

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

Örneğin, istediğinizi hayal edin uzantısına sahip olanlar dışında bir dizindeki tüm dosyaları sil .jpg, her ikisi de aynı sonucu aldığı için bu iki komuttan birini kullanabilirsiniz:

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

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

Bunun yerine, istersen ekstra desen eklesen de yapabilirsin. Örneğin, .pdf veya .odt dosyasını bir dizinden kaldırmak istemediğinizi varsayalım:

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

Tabii ki, aynı şeyi | ve xargs önceki örnekte olduğu gibi. Bu arada, kullandık - inkar etmemek, ancak pozitif yapmak, yani eşleşen kalıpları kaldırmak ve onları hariç tutmak için bunu kaldırabilirsiniz.

GLOBIGNORE değişkenini kullanarak bir dizinden dosyaları silin

Son olarak var Başka bir alternatif find and rm ve kaldırmak veya dışlamak istediğiniz dosyalara işaret etmek için bir ortam değişkeni kullanıyor. Örneğin, .pdf, .mp3 ve .mp4 dosyalarını kaydederek İndirilenler adlı bir dizindeki tüm dosyaları silmek istediğinizi düşünün. Bu durumda aşağıdakileri yapabilirsiniz:

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


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.