Jika Anda ingin konten direktori tunggal, metode yang mudah adalah dengan mengubahnya terlebih dahulu:
cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .
Apa yang Anda lihat adalah yang *
diperluas ke daftar nama file yang tidak dimulai dengan a .
. Itu perilaku yang didokumentasikan, dan itu adalah alasan utama mengapa file yang namanya dimulai dengan .
kata disembunyikan (yang lain adalah yang ls
tidak menunjukkannya secara default).
Tidak ada cara portabel yang benar-benar nyaman untuk membuat daftar semua file dalam direktori. Kamu bisa menggunakan
~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*
tetapi jika tidak ada file yang cocok dengan salah satu polanya maka polanya akan tetap tidak berkembang. Dalam bash, Anda dapat mengatur dotglob
opsi untuk menghindari memperlakukan pemimpin .
secara khusus ( .
dan ..
masih dikecualikan dari pertandingan):
shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
Di ksh, atau dalam bash jika Anda mengatur extglob
opsi (atau di zsh jika Anda mengatur ksh_glob
opsi), Anda dapat menulis pola yang cocok dengan semua file kecuali .
dan ..
:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/@(..?*|.[!.]*|*)
Di zsh, ada cara sederhana untuk mengatakan yang .
tidak harus diperlakukan secara khusus dalam sebuah pola:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*(D)
*
, coba hapus, 7z harus mengarsipkan seluruh direktori.