2016-04-12 16 views
0

hariç, ben bu komutu deneyin amaKaldır dosyası bazı dosyayı bir dizine ama '.gitignore' dosyasını kaldırmak istediğiniz dosyayı

[[email protected] lw2]$ find ./web/assets/* ! -name '.gitignore' | xargs rm -rf 
find: `./web/assets/*': No such file or directory 

Ben ile tekrar deneyin hata alıyorum "" karakter ama başka hatayı alıyorum:

[[email protected] lw2]$ find ./web/assets/. ! -name '.gitignore' | xargs rm -rf 
rm: cannot remove directory: `./web/assets/.' 

teşekkür ederiz bu komutla nesi söyle!

Sen .gitignore

silmezsiniz ulaşmak için bu nedenle bütün dizin silme önlemek için dosya dosya kaldırabilir ve

+0

Hata mesajı nasıl belirsiz? 'find' geçerli dizinin adını döndürür, ancak kaldırılamaz. Rm -rf ile zaten bir '.gitignore' dosyası içeren herhangi bir dizini kaldırabilirsiniz. – tripleee

cevap

0

bu deneyin:

find ./web/assets/* -type f ! -name '.gitignore' -exec rm {} \; 
+0

Bu, boş dizinlerin bir yığın bırakır. – tripleee

+0

Sorunun ne olduğunu görüyorsanız, bir dizindeki dosyaları kaldırmayı istediğini ve dizinleri de kaldırmayacağını görebilirsiniz. –

+1

Tamamen emin değilim. Neden rm -rf'yi kullanırlar? Her neyse, bu durumda, -type d'de geçmenin basit açık düzeltmesi, hata mesajından ve çok sayıda başkaından kolayca kaçınılabilirdi. – tripleee

0

(dosyaları için) bu deneyin:

[[email protected] lw2]$ find /full/path/to/directory/ -type f ! -iname ".gitignore" -exec rm -fv {} \; 

ya da (dizinler için) bu:

[[email protected] lw2]$ find /full/path/to/directory/ -type d ! -iname ".gitignore" -exec rm -fv {} \; 

NOT: Komutu önce geçici dizinleri kullanarak sınamak daha iyi olur, daha sonra ana komutu çalıştırın.