একাধিক সাব-ডিরেক্টরিতে কেবল ফাইলগুলি জিপ করবেন কীভাবে?


1

আমার একটি ফোল্ডার রয়েছে workingএবং এর কাঠামোটি এরকম কিছু -

working/
  100/
      1/
      2/
      3/
  200/
      1/
      2/
      3/
  300/
      1/
      2/
      3/

এবং এই 1 2 3ফোল্ডারের প্রত্যেকের কাছে প্রায় 1000 টি ফাইল রয়েছে।

আমি 1 2 3আলাদাভাবে ফোল্ডারগুলির নীচে ফাইলগুলি জিপ করতে চাই । জিপটিতে তাদের শীর্ষস্থানীয় ডিরেক্টরি থাকা উচিত নয়। জিপগুলি যেখানেই থাকুন না কেন। যেমন, যদি সেখানে ফাইল foo1, foo2এবং foo3ফোল্ডারের অধীনে 1তারপর এটি একটি জিপ অধীনে গঠন করা উচিত 1যা শুধু foo বিন্যাস ফাইল থাকা উচিত।


2
সাব-ডিরেক্টরিতে 1000 টিরও বেশি ফাইল থাকলে কী হবে? অথবা আপনি কি বোঝাতে চেয়েছিলেন যে আপনি সেই ফোল্ডারের সমস্ত ফাইলের ফোল্ডারে একক জিপ চান?
রোয়াইমা

এটা কি আপনার পক্ষে যথেষ্ট tar -lzip --no-wildcards-match-slash -c -f arch.zip working/*/?
কস্টাস

@ রাইমা না, ফাইলের সংখ্যায় কিছু আসে যায় না। হ্যাঁ আমি বলতে চাইছি আপনি পরবর্তী যা কিছু বলেছেন। এটি - আমি প্রতিটি 1 2 3ফোল্ডারের নীচে ফাইলগুলি জিপ করতে চাই । যেমন, যদি সেখানে ফাইল foo1 foo2এবং foo3ফোল্ডারের অধীনে 1তারপর এটি একটি জিপ অধীনে গঠন করা উচিত 1যা করা উচিত নয় শুধু আছে fooফাইল। কাস্টাস, আমি zipতাদের কাছে কঠোরভাবে চাই। আপনি কি নিশ্চিত যে এটি কাজ করবে?
চিন্ময় কুঙ্কিকার

উত্তর:


2

একটি সাধারণ লুপ কৌশলটি করবে।

cd working
for dir in */*/; do
  [ -e "$dir/files.zip" ] ||   # skip directories where the zip already exists
  ( cd -- "$dir" && zip -r files.zip .)
done

নোট করুন যে জিপটি সেই ডিরেক্টরিতে পুনরাবৃত্তি করার সময় তৈরি করা জিপ ফাইলটি এড়িয়ে যেতে যথেষ্ট স্মার্ট। অন্যান্য কিছু সংরক্ষণাগার প্রোগ্রাম সংরক্ষণাগারটি তৈরি করা হচ্ছে সংরক্ষণাগারটিতে তৈরি করার চেষ্টা করবে।


অসাধারণ! তবে একটা জিনিস। 'ফ্ল্যাশফাই.জিপ' নামে একটি জিপ রয়েছে যা জিপটিতেও প্রবেশ করা উচিত। এছাড়াও, আমি মনে করি যেগুলির প্রয়োজন আছে maxdepthবা কিছু আছে কারণ এর অধীনে ফোল্ডার রয়েছে 1 2 3। অসুবিধার জন্য দুঃখিত.
চিন্ময় কুনকিকার

@ চিন্ময়কিঙ্কিকার যদি flashify.zipডিরেক্টরিতে থাকে তবে এটি জিপতে অন্তর্ভুক্ত করা হবে, অন্যথায় এটি আপনাকে অন্তর্ভুক্ত করা হবে না, ঠিক যেমনটি আপনি প্রশ্নে উল্লেখ করেছেন। আপনি জিপ অন্য ফাইল অন্তর্ভুক্ত করতে চান, তাহলে আপনি এটি যোগ, যেমন পারেন zip "$dir/files.zip" flashify.zipযদি flashify.zipঅবস্থিত working
গিলস

@ চিন্ময়কুনকিকার আপনার "কী দরকার আছে" বলতে কী বোঝায় maxdepth- আপনার কি এর অর্থ 100/1এবং এরকম উপ-ডিরেক্টরি রয়েছে এবং আপনি এগুলিকে জিপটিতে অন্তর্ভুক্ত করতে চান না? তারপর আপনি পরিবর্তন করতে পারেন zip -r files.zip .থেকে zip -D files.zip *(এই বিন্দু ফাইল পাশাপাশি বাদ হবে)। পরের বার, আপনার প্রশ্নে আপনার সমস্ত প্রয়োজনীয়তা অন্তর্ভুক্ত করুন।
গিলস

দুঃখিত, আমি কেবল এটি লক্ষ্য করিনি */*;। আমি যা চেয়েছিলাম তা পেয়েছি। অনেক ধন্যবাদ.
চিন্ময় কুনকিকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.