ইউনিক্স জিপ ডিরেক্টরি তবে নির্দিষ্ট উপ-ডিরেক্টরি (এবং তাদের মধ্যে থাকা সমস্ত কিছু) বাদ দেওয়া হয়েছে


115

আমি একটি ডিরেক্টরি জিপ করার চেষ্টা করছি (এসএসএইচ এর মাধ্যমে ইউনিক্সে) তবে আমাকে বেশ কয়েকটি উপ-ডিরেক্টরি (এবং এর মধ্যে থাকা সমস্ত ফাইল এবং ডিরেক্টরি) বাদ দিতে হবে।

এখনও পর্যন্ত আমার কাছে এটি রয়েছে:

zip -r myarchive.zip dir1 -x dir1/ignoreDir/**/* 

যদিও এটি কাজ করে না বলে মনে হচ্ছে।

আমি চেষ্টাও করেছি

zip -r myarchive.zip dir1 -x dir1/ignoreDir1/* dir1/ignoreDir2/*

তবে এটি এখনও উপেক্ষাডির 1 এবং উপেক্ষাডির 2 এর মধ্যে সাব-ডিরেক্টরি অন্তর্ভুক্ত করবে।

যে ডিরেক্টরিগুলি আমি বাদ দিতে চাই তার ডিরেক্টরিগুলির সাব-ডাইরেক্টরি যথেষ্ট যথেষ্ট তাই আমি প্রতিটি ডিরেক্টরি -x আর্গুমেন্টে কেবল যুক্ত করতে পারি না।

কেউ কি জানেন, এটা কিভাবে করে?


@ আলেকজান্ডারমিলস - এই প্রশ্নটি দেখুন।
jww 1'18

উত্তর:


130

আমি এত কাছে ছিলাম!

আমার প্রকৃত আদেশটি হ'ল:

zip -r myarchive.zip dir1 -x dir1/ignoreDir1/**\* dir1/ignoreDir2/**\*

দুর্দান্ত, এবং অনুসরণ করার জন্য ধন্যবাদ! আপনি নিজের উত্তরটি গ্রহণ করতে পারেন accept
ড্যানিয়েল এইচ

2
এটি অসক্সে আমার পক্ষে কাজ করে নি। @ প্যাথফিল্ডার উত্তরটি এখনও দিয়েছেন।
rynop

11
এর পরিবর্তে: -x ডির 1 / উপেক্ষাডির 1 / ** \ *, আপনি এটি করতে পারেন: -x ডির 1 / উপেক্ষণডির 1 / \ *
রিচার্ড গোমস

67

ডিরেক্টরিটি বাদ দেওয়ার জন্য আমার বিশেষ সিস্টেমের জন্য আমাকে আমার বর্জনিত ডিরেক্টরিগুলির চারপাশে উদ্ধৃতি দিতে হয়েছিল এবং এটি একটি কবজির মতো কাজ করেছে:

zip -r myarchive.zip dir1 -x "dir1/ignoreDir1/*" "dir1/ignoreDir2/*"

নোট:

- এটি বাদ দিতে ডিরেক্টরি এবং এর ভিতরে থাকা সমস্ত ফাইলই বাদ দিয়েছে।

- আপনি যে ডিরেক্টরিগুলি বাদ দিতে চান তার জন্য অবশ্যই আপনাকে অবশ্যই পুরো পথটি ব্যবহার করতে হবে!


5
এটি ম্যাক ওএসে কাজ করে। :-)
ফিজিক্যাল্যাট্রাকশন

9
যেহেতু কেউ পাথগুলি উদ্ধৃত করার জন্য বা নক্ষত্রটি থেকে বেরিয়ে আসার প্রয়োজনীয়তার কারণ ব্যাখ্যা করেনি, কারণটি হ'ল: যদি পথটি উদ্ধৃত না করা হয় বা ওয়াইল্ডকার্ড পালিয়ে যায় তবে শেলটি তাদের পাশ দিয়ে যাওয়ার আগে ওয়াইল্ডকার্ড সম্প্রসারণ সম্পাদন করবে zip, যা একটি তালিকা পাবেন will নির্দিষ্ট ডিরেক্টরিতে প্রবেশের পথ, তবে সেগুলির সাব-ডিরেক্টরিতে থাকা ফাইলগুলির পাথ নয়, ফলে zipপ্রদত্ত ডিরেক্টরিগুলির অধীনে সমস্ত কিছু উপেক্ষা করার কারণ নয়।
জাগ্রিমসান

আমি মনে করি মূলত এটি কাজ করার একটি কারণ হ'ল ম্যাক ওএসে আমার ডিরেক্টরিগুলিতে ফাঁকা স্থান ছিল এবং এটি একটি
পাথফাইন্ডার

@ জাগ্রিমসান পরিষ্কার করার জন্য আপনাকে ধন্যবাদ। যে উভয়ই সমস্যাটি সংশোধন করেছে এবং এর কারণ ব্যাখ্যা করেছে যাতে আমরা এটি বুঝতে পারি (যা ভবিষ্যতে অন্যান্য বিষয়গুলির জন্যও কাজে আসবে)। 👍
Synetech

8

@ সুলম্যান ব্যবহার করে:

     জিপ -আর মাইআরচিভ.জিপ দির 1 -x ডির 1 / উপেক্ষাডির 1 / ** \ * দির 1 / উপেক্ষাডির2 / ** \ *

জিপ সংরক্ষণাগারটিতে এখনও dir1 / উপেক্ষাডির 1 / খালি ফোল্ডারটি অন্তর্ভুক্ত করবে:

     জিপ -আর মাইআরচিভ.জিপ দির 1 -x ডির 1 / উপেক্ষাডির 1 ** দির 1 / উপেক্ষাডির 2 **

কৌতুকটি করবে, আপনি কেবল ডায়ার 1 এর পরিবর্তে সাবফোল্ডারগুলিতে অনুসন্ধানের জন্য একটি শীর্ষস্থানীয় ** ব্যবহার করতে পারেন


আহ, ঠিক আছে! এই উপর আলোকপাত করার জন্য ধন্যবাদ!
সুলমান

7

নিম্নলিখিতটি করবে

জিপ -আর মাইআরচিভ.জিপ দির 1 -x ডির 1 / উপেক্ষাডির 1 \ * দির 1 / উপেক্ষাডির 2 \ *

আপনার কি দরকার **ছিল, সুলমান?

এটি নীচে আমার জন্য কবজির মতো কাজ করে:

[root@ip-00-000-000-000 dir1]# ls -lrt dir1/ 
total 16
drwxr-xr-x 2 root root 4096 Oct 31 07:38 ignoredir1
drwxr-xr-x 2 root root 4096 Oct 31 07:38 ignoredir2
drwxr-xr-x 2 root root 4096 Oct 31 07:39 dir3
-rw-r--r-- 1 root root    8 Oct 31 07:39 test.txt

[root@ip-00-000-000-000 temp]# zip -r dir1.zip dir1 -x dir1/ignoredir1\* dir1/ignoredir2\*
  adding: dir1/ (stored 0%)
  adding: dir1/dir3/ (stored 0%)
  adding: dir1/dir3/test3.txt (deflated 13%)
  adding: dir1/test.txt (stored 0%)

আমি জানি না কেন ** প্রয়োজন হয়। হয়তো অন্য কেউ এ বিষয়ে কিছু আলোকপাত করতে পারে?
সুলমান

দুঃখিত, @ সুলম্যান, আমি ভুল টাইপ করেছি। আমি যা বোঝাতে চাইছি তা আমার সর্বশেষ সম্পাদনা অনুসারে। আমার জন্য :) একটি যাদুমন্ত্র মত একটি কাজ করে
ericn

1

অন্যান্য উত্তরগুলির মতো, তবে ডিরেক্টরিগুলির সমস্ত বিষয়বস্তু বাদ দিয়ে পুরোপুরি ডিরেক্টরিগুলি বাদ দিয়ে:

zip -r myarchive.zip dir1 -x dir1/ignoreDir1/\* dir1/ignoreDir2/\*

0

আমি ডেভিড আর হেফেলফিংগার এর কাছ থেকে কাজ করতে এটি পেয়েছি :

zip -r myarchive.zip dir1 -x dir1/ignoreDir1\* dir1\ignorDir2\*

এটি ডিরেক্টরি এবং এর সামগ্রীগুলি বাদ দেয়।


অবশ্যই ব্যাকস্ল্যাশ এর মাঝে dir1এবং ignorDir2বোঝানো হচ্ছে একটি ফরোয়ার্ড স্ল্যাশ। আপনি কি অন্য ব্যাকস্ল্যাশ ব্যাকস্ল্যাশ হতে চান? যদি আপনি তা করেন, তবে আপনি দু'বছর আগে থেকেই সুনির্দিষ্ট উত্তরটি অনুলিপি করেছেন।
জি-ম্যান

-1

আমার জন্য কাজ করেছেন: জিপ -9 -আর fold / ফোল্ডেড.জিপ অনলাইন -x ফোল্ডার / ফোল্ডার 2 / ফোল্ডার 3 / ফোল্ডারন / \ *

মনে হচ্ছে যে তারাটি অবশ্যই পলায়ন করতে হবে।


2
একবছর আগে রিক এহ্রাহার্টের সমাধান থেকে, বা এরিকের (আরও কয়েক বছর আগে) এর থেকে কীভাবে এই পার্থক্য রয়েছে? দয়া করে একটি নতুন পোস্ট করার আগে প্রদত্ত সমাধানগুলি পড়ুন ...
zagrimsan

কারণ আমি নক্ষত্রের আগে একটি ব্যাকস্ল্যাশ যুক্ত করেছি (এটি তারকাচিহ্ন থেকে বাঁচার জন্য)। আমার কাজ লিনাক্স সংস্করণে আমি যদি এটি না করি তবে কাজ করে না।
ফ্রান্সিসকো এম

এছাড়াও রিক এহরহার্ট (২০১৪) এবং এরিক (২০১২) একই সমাধান পোস্ট করেছেন (নক্ষত্র থেকে বাঁচতে)। সমাধানের সাথে কোনও ভুল নেই, তবে সমাধানটি কেন কাজ করে তা ব্যাখ্যা করে সমাধানের গভীরতা যুক্ত করতে না পারলে একাধিকবার একই পোস্ট করা অর্থহীন নয়। এর মতো সাধারণ ক্ষেত্রে, এর বেশি ব্যাখ্যা করার মতো কিছুই নেই। দয়া করে এটি ব্যক্তিগতভাবে গ্রহণ করবেন না, এখানে আমার একমাত্র উদ্দেশ্য হ'ল এসইউ পরিষ্কার এবং সংক্ষিপ্ত রাখতে সহায়তা করা যাতে ব্যবহারকারীরা সর্বনিম্ন প্রচেষ্টা নিয়ে সেরা সমাধানটি খুঁজে পেতে পারে।
জাগ্রিমসান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.