Ben sadece düzenli dizine dosya karmaşası üreten bir arşivi kaldırdım. Örneğin:
user@comp:~/tidy$ tar xvf myarchive.tar
file1
file2
dir1/
dir1/file1
dir1/subdir1/
dir1/subdir1/file1
dir2/
dir2/file1
...
Tar dosyasının tek bir klasörde (yani myarchive/
) organize edileceğini umuyordum , ama değildi! Şimdi organize bir dizinde neyin dijital olarak engellendiği 190 dosya ve dizine sahibim. Bu düzensiz dosyaların temizlenmesi gerekiyor.
Bunu geri almanın ve bu arşivden çıkarılan dosyaları ve dizinleri silmenin bir yolu var mı?
Aşağıdaki mükemmel cevaplar için teşekkürler. Özetle , işte iki adımla çalışan şey (1) dosyaları sil ve (2) boş dizin yapısını ters paketleme sırasına göre sil (ilk önce dış dizinleri silmek için):
tar tf myarchive.tar | xargs -d'\n' rm
tar tf myarchive.tar | tac | xargs -d'\n' rmdir
Ve daha da güvenli, echo
sonradan ekleyerek komutların kuru çalışmasını önizlemek için xargs
.
xargs
( sadece kozmetikler tac
yerine sort -r
) kullanmaya başladın, ama yorumlarda açıkladığın gibi sana uygun olmayan proses ikamesini kabul ettin? Ayrıca, xargs -d'\n'
gelecekteki kullanıcılar için özetlemek istiyorsanız , lütfen geçişi veriniz , böylece dosya adlarındaki boşluklara göre ısırılmayacaklar.
-d'\n'
şu ana kadar gerekliliği hiç anlamadım ve daha fazla analiz üzerine cevabınız aslında kullandıklarımdan daha yakın.
-d'\n'
söylemezseniz xargs
, boşluklarda, sonra bir dosyayı isim ve folder1/some file
olarak okunacaktır . folder1/some
name