2012-06-28 25 views
9
zip -r 1.zip /home/username/the_folder 

Tại đây, khi tôi giải nén 1.zip, nó sẽ tạo /home/username/the_folder, từ thư mục nào tôi đang giải nén.Zip ghi rõ đường dẫn tuyệt đối, nhưng chỉ giữ một phần của chúng

Làm cách nào để nén, nêu rõ đường dẫn tuyệt đối đầy đủ, nhưng làm cho mã zip chỉ chứa cấu trúc thư mục bắt đầu từ, trong trường hợp này chẳng hạn như /home/username?

Bằng cách đó tôi có thể ở bất kỳ con đường nào tôi muốn, giải nén và nó sẽ chỉ tạo the_folder và không phải /home/username/the_folder.

Trả lời

9

Sử dụng lệnh này:

cd path_under_folder_to_zip && \ 
zip -r 1.zip folder_to_zip >/dev/null && \ 
mv 1.zip my_current_path 
+0

cd path_under_folder_to_zip && zip -r my_current_path/1.zip folder_to_zip>/dev/null –

+0

Hoạt động tốt trên macOS :) Cảm ơn. –

5

Sử dụng đường dẫn tương đối khi chỉ định tệp cần nén.

cd /home/username 
zip -r 1.zip ./the_folder 

Sau đó, khi giải nén, đó sẽ là đường dẫn tương đối bắt đầu từ bất kỳ thư mục nào bạn đang ở khi giải nén.

+0

Ông muốn để có thể sử dụng đường dẫn tuyệt đối. Xin lưu ý 'bất cứ con đường nào tôi muốn'. Mặc dù những gì bạn đang nói có ý nghĩa. –

1
  1. List item

Làm thế nào về điều này:

function zipExtraFolder { 
    if [ $# -lt 2 ]; then 
     echo "provide at least two arguments" 
     return 
    fi 
    folder=$2 
    mkdir del 
    echo cp -r `dirname $folder` del 
    cd del 
    echo zip -r ../$1 . 
    cd - 
    rm -rf del 
} 

Xác định trên như một chức năng vỏ trong .bashrc của bạn và bạn sẽ có thể sử dụng nó bất cứ khi nào bạn muốn. Cách sử dụng sẽ như sau.

zipExtraFolder 1.zip /home/username/the_folder 
+0

Tôi thực sự không thể đọc mã đó và điều này có gây ra vấn đề khi tôi bắt đầu thực hiện các lệnh zip phức tạp hơn không? –

-1

Chỉ cần sử dụng tùy chọn -j, hoạt động trên OSX, tôi không biết về linux.

zip -j -r 1.zip /home/username/the_folder

+0

tôi gặp lỗi, rõ ràng vì có hai phiên bản của một tệp có cùng tên trong thư mục đó. Mặc dù chúng nằm trong các thư mục con khác nhau. –

+6

Tôi đã quên, tùy chọn '-j' là không thực tế khi sử dụng với tùy chọn' -r', vì nó nén tất cả các tệp trong thư mục gốc mà không có cấu trúc thư mục. – jackjr300

+0

nếu '-j' không hoạt động cho bạn thanh toán [câu trả lời này] (http://superuser.com/a/119661/45285) – czerasz

Các vấn đề liên quan