জিপ ফাইল তৈরি করুন এবং ডিরেক্টরি কাঠামো উপেক্ষা করুন


217

এই কমান্ডটি ব্যবহার করে আমার একটি জিপ ফাইল তৈরি করতে হবে:

zip /dir/to/file/newZip /data/to/zip/data.txt

এটি কাজ করে, তবে তৈরি জিপ ফাইলটি একটি ডিরেক্টরি কাঠামো তৈরি করে যা ডিরেক্টরিটিকে কাঁচা ফাইলের সাথে অনুকরণ করে। এটি আমার অতিরিক্ত ফোল্ডারগুলির প্রয়োজন নেই।

ম্যান পেজ বা গুগল হান্টের উপরে আমি কারসারি নজরে কোনও উত্তর পাইনি।



2
আমি ভাবছিলাম এই প্রশ্নটি অন্যান্য সমস্ত স্ট্যাক এক্সচেঞ্জগুলির পূর্বেই ছিল তবে হায় হায় সুপারসুজারের পোস্টটি আসলে এটির চেয়ে পুরনো। যদি এখানে কিছু থাকে তবে আমাকে জানাতে সাহায্য করতে পারেন। এটি অবশ্যই বেশ উত্তপ্ত উত্তর হতে হবে যেহেতু গুগল এখনও এখানে এত বেশি ট্র্যাফিক চালায়। : ডি
জ্যাক

উত্তর:


352

আপনি ব্যবহার করতে পারেন -j

-j
--junk-paths
          Store just the name of a saved file (junk the path), and do  not
          store  directory names. By default, zip will store the full path
          (relative to the current directory).

19
যদি -jআপনার ডিরেক্টরিতে (একসাথে -r) এই উত্তরটি
czerasz

একসময় এটি ঠিক কাজ করে না ... @czerasz লিঙ্কটি পছন্দ করুন;) যা মূলত একটি পুশড পপড কম্বো
TecHunter

36

ব্যবহার বিকল্পের -jসাথে কাজ করবে না -r
সুতরাং এটির জন্য কাজটি এই হতে পারে:

cd path/to/parent/dir/;
zip -r complete/path/to/name.zip ./* ;
cd -;

অথবা ইন-লাইন সংস্করণ

cd path/to/parent/dir/ && zip -r complete/path/to/name.zip ./* && cd -

আপনি /dev/nullযদি cd -আউটপুটটিকে স্ক্রিনে প্রদর্শিত না করতে চান তবে আপনি আউটপুটটি নির্দেশ করতে পারেন


আসলে, আপনি নিম্নলিখিতগুলি করতে চাইবেন:cd path/to/parent/dir/ && zip -r ../../../../name.zip ./* && cd -
এডিপি 23

@ এডিপি 23 এটি কীভাবে কোনও পার্থক্য করে? বরং এটি আপনাকে সংখ্যার যোগ করতে বাধ্য করবে। পথে প্রতিটি ডিরেক্টরি জন্য পিতামাতার (..) এর::
বিকাশ তওনিয়া

ফলাফল একই, আমি একমত। তবে অনেকগুলি ভিন্ন পরিবেশে চালিত স্বয়ংক্রিয় স্ক্রিপ্টগুলিতে আপনি সাধারণত বিশ্বব্যাপী পাথগুলি এড়িয়ে যান, কারণ গ্লোবাল পাথ কী হবে আপনার কোনও ধারণা নেই। তবে cd path/to/parent/dir/আপনি ../সহজেই ডাবল ডটগুলির সংখ্যা গণনা করতে পারেন।
eddyP23

@ এডিপিপি 23 তা বোঝায়
বিকাশ তওনিয়া

33

-jবিকল্পটি ব্যবহার করুন :

   -j     Store  just the name of a saved file (junk the path), and do not
          store directory names. By default, zip will store the full  path
          (relative to the current path).

18

কিছুটা সম্পর্কিত - আমি ডিরেক্টরিগুলির জন্য একই করার একটি সমাধান খুঁজছিলাম। দুর্ভাগ্যক্রমে -jবিকল্পটি এর জন্য কাজ করে না :(

এটি সম্পন্ন করার জন্য এখানে একটি ভাল সমাধান রয়েছে: /superuser/119649/avoid-unwanted-path-in-zip-file


3

বিকল্পভাবে, আপনি আপনার ফাইলে একটি অস্থায়ী প্রতীকী লিঙ্ক তৈরি করতে পারেন:

ln -s /data/to/zip/data.txt data.txt
zip /dir/to/file/newZip !$
rm !$

এটি একটি ডিরেক্টরিতেও কাজ করে।


1

প্যারেন্ট ডিরেক্টরিটি পুনরুদ্ধার করুন যাতে unzipকোথাও ফাইল বানান না

ডিরেক্টরিগুলি জিপ করার সময়, পূর্ববর্তী ডিরেক্টরিটি সংরক্ষণাগারটিতে রাখলে আপনি পরে সংরক্ষণাগার ফাইলটি আনজিপ করুন যখন আপনার বর্তমান ডিরেক্টরি লিটারিং এড়াতে সহায়তা করবে

সুতরাং সমস্ত পাথ ধরে রাখা এড়াতে এবং যেহেতু আপনি -j এবং -r একসাথে ব্যবহার করতে পারবেন না (আপনি একটি ত্রুটি পাবেন) তবে আপনি এর পরিবর্তে এটি করতে পারেন:

cd path/to/parent/dir/;
zip -r ../my.zip ../$(basename $PWD)
cd -;

../$(basename $PWD)জাদু যে পেরেন্ট ডাইরেক্টরি বজায় নেই।

সুতরাং এখন unzip my.zipআপনার সমস্ত ফাইল সমন্বিত একটি ফোল্ডার দেবে:

parent-directory
├── file1
├── file2
├── dir1
│   ├── file3
│   ├── file4

আনজিপড ফাইল সহ বর্তমান ডিরেক্টরি লিটারের পরিবর্তে:

file1
file2
dir1
├── file3
├── file4

0

কেবল -jrmফাইল এবং ডিরেক্টরি কাঠামো অপসারণ করতে বিকল্পটি ব্যবহার করুন

zip -jrm /path/to/file.zip /path/to/file

সাবধান থাকুন, -ম - স্থানান্তরিত ফাইলগুলি জিপ সংরক্ষণাগারটিতে সরান; প্রকৃতপক্ষে, এটি নির্দিষ্ট জিপ সংরক্ষণাগার তৈরির পরে লক্ষ্য ডিরেক্টরিগুলি / ফাইলগুলি মুছে দেয়। ফাইলগুলি অপসারণের পরে যদি কোনও ডিরেক্টরি খালি হয়ে যায়, ডিরেক্টরিটিও সরানো হবে। জিপ ত্রুটি ছাড়াই সংরক্ষণাগার তৈরি না করা পর্যন্ত কোনও মুছে ফেলা হয় না। এটি ডিস্কের স্থান সংরক্ষণের জন্য দরকারী, তবে এটি সম্ভাব্য বিপজ্জনক তাই সমস্ত ইনপুট ফাইল সরানোর আগে সংরক্ষণাগারটি পরীক্ষা করার জন্য এটি -T এর সাথে একত্রে ব্যবহার করার পরামর্শ দেওয়া হয়।
4:55
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.