سؤال Unix zip directory ولكنه يستبعد أدلة فرعية محددة (وكل شيء بداخلها)


أحاول أن أغلق دليلًا (على Unix عبر SSH) ، لكنني بحاجة إلى استبعاد بعض الدلائل الفرعية (وجميع الملفات والأدلة الموجودة بها).

لدي حتى الآن:

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

لا يبدو أن العمل على الرغم من.

لقد حاولت أيضا

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

ومع ذلك ، سيظل يشتمل على أدلة فرعية في ignoreDir1 و ignoreDir2.

بنية الدليل الفرعي في الدلائل التي أريد استبعادها كبيرة جدًا لذا لا يمكنني ببساطة إضافة كل دليل إلى الوسيطة -x.

لا أحد يعرف كيفية القيام بذلك؟


85
2017-07-19 10:19


الأصل


AlexanderMills - انظر هذا السؤال. - jww


الأجوبة:


كنت قريبا جدا!

الأمر الفعلي الذي أحتاجه هو:

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

92
2017-07-19 10:32



رائع ، وشكرًا على المتابعة! يمكنك قبول إجابتك الخاصة ، بالمناسبة. - Daniel H
فقط ما كنت أبحث عنه ، وذلك بفضل المتأنق! - Latheesan
هذا لم يعمل بالنسبة لي على osx. @ pathfilder الإجابة على الرغم من. - rynop
بدلاً من هذا: -x dir1 / ignoreDir1 / ** \ * ، يمكنك القيام بذلك: -x dir1 / ignoreDir1 / \ * - Richard Gomes


بالنسبة إلى نظامي الخاص من أجل استبعاد دليل ما ، كان علي وضع علامات اقتباس حول الدلائل المستثناة لي ، وقد عملت مثل السحر:

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

ملاحظات:

- استبعد هذا الدليل لاستبعاده وجميع الملفات داخله.

- يجب استخدام المسار الكامل إلى الأدلة التي تريد استبعادها!


55
2017-10-31 11:43



هذا هو الذي يعمل على نظام التشغيل Mac OS. :-) - physicalattraction
كما لم يشرح أحد سبب طلب إما نقل المسارات أو الهروب من العلامة النجمية ، فإن السبب في ذلك هو: إذا لم يتم اقتباس المسار أو نفد حرف البدل ، فستقوم shell بتنفيذ تتابع أحرف البدل قبل يمر بها zip، والتي ستتلقى قائمة من المسارات إلى إدخالات في الدلائل المحددة ، ولكن لا مسارات للملفات داخل الدلائل الفرعية لتلك ، مما تسبب zip لعدم تجاهل كل شيء تحت الأدلة المعطاة. - zagrimsan
أعتقد في الأصل أن أحد الأسباب التي أدت إلى ذلك كان بسبب وجود نظام التشغيل Mac OS في مسافاتي وهذا تجنب الحاجة إلى \ - pathfinder


سوف تفعل ما يلي

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

ما الذي تحتاجه ** ل ، @ سولمان؟

وهي تعمل مثل سحر بالنسبة لي على النحو التالي:

[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%)

6
2017-09-17 05:00



لا أعلم سبب ضرورة **. ربما يمكن لشخص آخر إلقاء بعض الضوء على هذا؟ - sulman
عذرا ،Sulman ، كتبت خطأ. ما أعنيه هو حسب آخر تعديل لي. يعمل مثل سحر بالنسبة لي :) - ericn


sulman باستخدام:

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

سيظل مجلد dir1 / ignoreDir1 / فارغًا في أرشيف zip ، باستخدام:

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

سوف تفعل الخدعة ، يمكنك أيضا استخدام الرائدة ** للبحث في المجلدات الفرعية بدلا من dir1 فقط


4
2017-10-30 11:31



آه حسنا! شكرا لتسليط الضوء على هذا! - sulman


تمامًا مثل الإجابات الأخرى ، ولكن باستثناء الدلائل تمامًا ، بدلاً من استبعاد كافة محتويات الدلائل:

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

1
2018-01-22 14:39





لقد وجدت هذا للعمل من ديفيد R Heffelfinger:

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

استبعد الدليل ومحتوياته.


0
2017-10-03 18:28



بالتأكيد خط مائل عكسي بين dir1 و ignorDir2 من المفترض أن تكون مائلة للأمام. هل تقصد للشرطة المائلة العكسية الأخرى أن تكون خطوط مائلة عكسية؟ إذا قمت بذلك ، فقد قمت للتو بنسخ إجابة fuzzybee من قبل عامين. - G-Man


بالنسبة لي عملت:  zip -9 -r ~ / folded.zip online -x folder / folder2 / folder3 / foldern /\ *.

يبدو أن النجمة يجب أن تفلت


-1
2017-12-01 13:29



كيف يختلف هذا عن الحل الذي قدمه ريك إهرارت منذ عام ، أو إريك (قبل بضع سنوات)؟ يرجى قراءة الحلول المقدمة قبل نشر حل جديد ... - zagrimsan
لأنني أضفت شرطة مائلة للخلف قبل العلامة النجمية (التي هي للهروب من العلامة النجمية). في إصدار لينكس في عملي لا يعمل إذا لم أفعل ذلك. - Francisco M
كما نشر ريك إهرارت (2014) وإريك (2012) نفس الحل (للهروب من النجمة). لا يوجد شيء خاطئ في الحل ، ولكن نشر نفس الشيء عدة مرات لا معنى له ما لم يكن بإمكان المرء أن يضيف عمقًا كبيرًا إلى الحل عن طريق شرح سبب نجاح الحل. في حالة بسيطة كهذه ، لا يوجد شيء يمكن شرحه أكثر. من فضلك لا تأخذ هذا شخصيا ، نيتى الوحيد هنا هو المساعدة في الحفاظ على SU نظيفة وموجزة بحيث يمكن للمستخدمين العثور على الحل الأفضل بأقل جهد. - zagrimsan