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">
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