Saya mencoba membuat tarball terkompresi yang berisi semua file PDF yang ada di salah satu direktori saya. Struktur direktori perlu dipertahankan. Direktori kosong tidak diperlukan, tetapi saya benar-benar tidak peduli jika ada di sana.
Misalnya, saya memiliki direktori yang terlihat seperti ini:
dir
dir/subdir1
dir/subdir1/subsubdir1/song.mp3
dir/subdir2
dir/subdir2/subsubdir1
dir/subdir2/subsubdir1/document.pdf
dir/subdir2/subsubdir1/another-song.mp3
dir/subdir2/subsubdir1/top-ten-movies.txt
dir/subdir3
dir/subdir3/another-document.pdf
Setelah menjalankan perintah, saya ingin dir.tar.gz
mengandung ini:
dir
dir/subdir2
dir/subdir2/subsubdir1
dir/subdir2/subsubdir1/document.pdf
dir/subdir3
dir/subdir3/another-document.pdf
Bisa jadi?
find docs \( -iname '*.pdf' -o -iname '*.mp3' \) -printf '"%p"\n' | xargs tar czf docs-media.tar.gz
\'"
(kesalahan xargs), dan tidak akan berfungsi jika ada terlalu banyak nama file (kesalahan kernel).-printf '"%p"\n'
bagian menangani itu (setidaknya itu untuk saya).Dengan bash ≥4 atau zsh dan tar GNU:
Ini mungkin tidak berfungsi jika Anda memiliki jumlah file PDF yang sangat besar dan baris perintah terlalu panjang. Maka Anda akan membutuhkan solusi berbasis pencarian yang lebih kompleks (sekali lagi, menggunakan tar GNU):
Atau (dan mudah dibawa) Anda dapat membuat arsip dengan pax .
Yang pertama
-s
mengatakan untuk memasukkan semua.pdf
file, tanpa mengubah nama mereka. Yang kedua-s
mengatakan untuk mengubah nama semua file lain menjadi nama kosong, yang sebenarnya berarti tidak memasukkannya ke dalam arsip.sumber
**
; Aku bahkan tidak menyadari bahwa bash 4 memilikinya sekarang