Saya baru saja membuka arsip yang menghasilkan kekacauan file ke direktori rapi saya. Sebagai contoh:
user@comp:~/tidy$ tar xvf myarchive.tar
file1
file2
dir1/
dir1/file1
dir1/subdir1/
dir1/subdir1/file1
dir2/
dir2/file1
...
Saya berharap bahwa file tar akan diatur dalam satu folder (mis., myarchive/
), tapi ternyata tidak! Sekarang saya memiliki sekitar 190 file dan direktori yang secara digital muntah dalam apa yang merupakan direktori yang terorganisir. File-file yang belum diarsipkan ini perlu dibersihkan.
Apakah ada cara untuk "membatalkan" ini dan menghapus file dan direktori yang diambil dari arsip ini?
Terima kasih atas jawaban yang sangat baik di bawah ini. Singkatnya , inilah yang berfungsi dengan dua langkah (1) menghapus file, dan (2) menghapus struktur direktori kosong dalam urutan pengemasan terbalik (untuk menghapus direktori luar terlebih dahulu):
tar tf myarchive.tar | xargs -d'\n' rm
tar tf myarchive.tar | tac | xargs -d'\n' rmdir
Dan lebih aman lagi, untuk melihat pratinjau perintah yang dijalankan dengan menambahkan echo
setelah xargs
.
xargs
( tac
dari pada sort -r
hanya kosmetik), tetapi Anda menerima jawaban dengan proses substitusi yang, seperti yang Anda jelaskan di komentar, tidak cocok untuk Anda? Juga, tolong beri xargs -d'\n'
beralih di posting Anda jika Anda ingin merangkum untuk pengguna masa depan, sehingga mereka tidak akan digigit oleh spasi dalam nama file.
-d'\n'
sampai sekarang, dan setelah dianalisis lebih lanjut, jawaban Anda sebenarnya mendekati apa yang saya gunakan.
-d'\n'
terletak pada kenyataan bahwa jika Anda tidak memberi tahu xargs
untuk membagi argumen pada baris baru (yang Anda beri makan) tetapi pada spasi, lalu file dengan nama folder1/some file
akan dibaca sebagai folder1/some
dan name
.