bir biraz tehlikeli çözüm şu, komut satırından:
find . -type f ! -regex '.*/[ -.0-~]*' -exec rm {} +
Yalnız değiştirin .
İlk önce ilgili dizine geçmediyseniz, üst dizinin ismiyle. Güvende olmak için önce kısa komutu deneyin
find . -type f ! -regex '.*/[ -.0-~]*'
ve yalnızca silmek istediğiniz dosyaları listelediğinden emin olun. Buradaki normal ifade (regexp veya regex), eğik çizgide biten herhangi bir yol adıyla ve ardından hariç yazdırılabilir ASCII karakterlerinin herhangi bir kombinasyonu ile eşleşir /
boşluk karakterleri ilk ~
son .
ve 0
kuşatma /
ASCII dizisinde.
Birçoğunun arasında bir uyarı: Mevcut yerel ayarınızın karakterlerin harmanlama sırasını değiştirip değiştiremeyeceğinden emin değilim ve dolayısıyla regexp'in anlamını değiştirebilir. Öyle sanmıyorum, ama öyleyse, komutları olduğu gibi çalıştırma
LC_COLLATE=C find …
tehlikeyi ortadan kaldırmalı.
Yine bir başka uyarı: Lütfen denemeden önce bir yedeğiniz olduğundan emin olun. Yanlış yaparsanız, herhangi bir veri kaybı için suçu almayacağım. Komut satırı, kendinizi ayağınızdan vurmak için harika bir araçtır! Bazen sadece yanlış yerleştirilmiş bir alan felakete neden olabilir. (Bu durumda, örneğin, sol parantez ölümcül olduktan sonra tek boşluk bırakılması.)
find -name ’*ü*' -print
?