ডিরেক্টরিতে ইতিমধ্যে বিদ্যমান .gz ফাইলগুলি বাদ দিয়ে ডিরেক্টরিতে ফাইলগুলি সংকুচিত করতে gzip ব্যবহার করুন


19

আমার লগগুলির একটি ডিরেক্টরি রয়েছে যা আমি জিজেপ ব্যবহার করে সংকোচনের জন্য একটি কাজ সেট করতে চাই । বিষয়টি হ'ল আমি যে লগগুলি ইতিমধ্যে সংকুচিত করেছি সেগুলি পুনরায় সংশোধন করতে চাই না।

আমি চেষ্টা করার চেষ্টা করেছি ls | grep -v gz | gzip, কিন্তু এটি কাজ করে না বলে মনে হচ্ছে।

এই কাজ করতে একটি উপায় আছে কি? মূলত আমি ডিরেক্টরিতে প্রতিটি ফাইল জিজিপ করতে চাই যা .gz এ শেষ হয় না।

উত্তর:


26

আপনি ঠিক করতে পারেন:

gzip *

gzip আপনাকে জানাবে এটি ইতিমধ্যে .gz শেষ হওয়া ফাইলগুলি এড়িয়ে চলে ।
যদি সেই বার্তাটি আপনি ব্যবহার করতে পারেন তবে:

gzip -q *

আপনি যা চেষ্টা করেছেন তা কাজ gzipকরে না , কারণ স্টিডিনের থেকে সংকোচনের জন্য ফাইলগুলির ফাইলের নামগুলি পড়েন না, সেই কাজের জন্য আপনাকে ব্যবহার করতে হবে:

ls | grep -v gz | xargs gzip

আপনি gzকেবল শেষের দিকে নয়, ফাইলের নামের যে কোনও জায়গায় প্যাটার্নযুক্ত ফাইলগুলিকে বাদ দেবেন ¹ আপনাকে আরও খেয়াল রাখতে হবে যে lsস্পেস, নিউলাইনস ইত্যাদির সাথে ফাইলের নাম জড়িত থাকার সময় আউটপুট পার্সিং করা বিপজ্জনক।

আরও পরিষ্কার সমাধান, শেষের gzipসাথে ফাইলগুলি এড়িয়ে যাওয়ার উপর নির্ভর না .gzকরা, এটি সাব-ডাইরেক্টরিগুলিতে অ-সংকুচিত ফাইলগুলি পরিচালনা করে:

find .  -type f ! -name "*.gz" -exec gzip {} \;



Com যেমন মন্তব্য করা হয়েছে: এটির উন্নতি করতে একা ব্যবহার করা কার্যকর হবে না। আপনি ব্যবহার করতে হবে বা এটি এখনও আউটপুট প্রক্রিয়াজাতকরণের বিপদ ছেড়ে দেয়izkata.gzgrep -vF .gzgrep -v '\.gz$'ls


1
"... এটি কোনও ফাইলের নামের কিছু অভ্যন্তরীণ অংশের সাথে মিলে যাওয়ার সম্ভাবনা কম করে" - এটি গ্রেপ, কেবল $এটি পরিষ্কার করে ব্যবহার করুন । এবং আপনি .যেভাবেই পালাতে পারেননি , সুতরাং এটি কেবল ফাইলগুলি বাদ দেয় যা শুরু হয় gz(যেহেতু তাদের "পূর্বে কোনও চরিত্র নেই gz")
ইজকাটা

1
@ ইজকাটা: না, অনাকাঙ্ক্ষিত বিন্দু সহ এবং রেজিেক্স অ্যাঙ্কোর না করে $( -v) নাম বা তিন বা ততোধিক অক্ষরের সমন্বিত সমস্ত ফাইল রয়েছে যারপরে ফাইলের নামের যে কোনও জায়গায় "জিজেড" রয়েছে। সুতরাং এটিতে "gz" দিয়ে শুরু হওয়া ফাইলগুলির অন্তর্ভুক্ত থাকবে ।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

1
@ ডেনিসউইলিয়ামসন আমার শেষ মন্তব্যটি পরিষ্কার ছিল না, এটি gzনামের যে কোনও জায়গায় (শুরু বাদে) ফাইলগুলিও বাদ দিতে চলেছে । সুতরাং যাইহোক এটি নোঙ্গর করা ভাল। ব্যবহার না করে $, এটি এমনভাবে পড়েছিল যেন আপনি বুঝতে পারেন নি .একটি রিজেক্সের অর্থ কী , তাই বাকি বিভ্রান্তিকর মন্তব্য।
ইজকাটা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.