Nếu bạn muốn nội dung của một thư mục, một phương pháp dễ dàng là thay đổi nó trước:
cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .
Những gì bạn thấy là *
mở rộng ra danh sách tên của các tệp không bắt đầu bằng a .
. Đó là hành vi được ghi lại và đó là lý do chính tại sao các tệp có tên bắt đầu bằng một .
được cho là bị ẩn (cái khác là ls
không hiển thị chúng theo mặc định).
Không có cách di động thực sự thuận tiện để liệt kê tất cả các tệp trong một thư mục. Bạn có thể dùng
~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*
nhưng nếu không có tệp nào khớp với một trong các mẫu thì mẫu sẽ vẫn chưa được mở rộng. Trong bash, bạn có thể đặt dotglob
tùy chọn để tránh đối xử .
đặc biệt hàng đầu ( .
và ..
vẫn bị loại khỏi các trận đấu):
shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
Trong ksh hoặc trong bash nếu bạn đặt extglob
tùy chọn (hoặc trong zsh nếu bạn đặt ksh_glob
tùy chọn), bạn có thể viết một mẫu phù hợp với tất cả các tệp ngoại trừ .
và ..
:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/@(..?*|.[!.]*|*)
Trong zsh, có một cách nói đơn giản hơn mà .
không được đối xử đặc biệt theo một mẫu:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*(D)
*
, hãy thử gỡ bỏ nó, 7z nên lưu trữ toàn bộ thư mục.