Bagaimana saya bisa memampatkan subdirektori ke arsip terpisah?
Contoh:
directory
subdir1
subdir2
Harus membuat subdir1 (.tar) .gz dan subdir2 (.tar) .gz
Skrip kecil ini tampaknya menjadi pilihan terbaik Anda, mengingat persyaratan Anda:
cd directory
for dir in */
do
base=$(basename "$dir")
tar -czf "${base}.tar.gz" "$dir"
done
Itu benar menangani direktori dengan spasi di namanya.
Bagaimana dengan ini:
find * -maxdepth 0 -type d -exec tar czvf {}.tar.gz {} \;
Penjelasan: Anda menjalankan pencarian pada semua item di direktori saat ini. Maxdepth 0 membuatnya tidak berulang lebih rendah dari argumen yang diberikan. (Dalam hal ini *, atau semua item dalam direktori Anda saat ini) Argumen 'd' untuk "-type" hanya cocok dengan direktori. Kemudian exec menjalankan tar pada pertandingan apa pun. ({} diganti dengan file yang cocok)
sumber
for dir in `find * -maxdepth 0 -type d`; do tar -cvzf ${dir}.tar.gz ${dir}; done
Ini akan membuat file bernama blah.tar.gz untuk setiap file dalam direktori bernama bla.
Jika Anda memiliki lebih dari sekadar direktori di direktori (yaitu file juga, karena ls akan mengembalikan semua yang ada di direktori), maka gunakan ini:
Grep -v mengecualikan direktori saat ini yang akan muncul dalam
find
perintah secara default.sumber
for dir in *