ডিরেক্টরিতে প্রতিটি ফাইলকে তার নিজস্ব সংকুচিত ফাইলে সংকুচিত করুন


24

প্রতিটি ফাইলের নাম সংরক্ষণের সাথে আমি কীভাবে ডিরেক্টরিতে প্রতিটি ফাইলকে তার নিজস্ব টারে সংকুচিত করব?

ie file1.out file2.out

->

file1.out.tar.gz file2.out.tar.gz

উত্তর:


64

প্রতিটি ফাইলকে আলাদা ট্যারে ফাইলের মধ্যে রাখলে এই দৃশ্যের কোনও অর্থ হয় না। আপনি gzipতাদের সরাসরি সংকোচনের জন্য ব্যবহার করতে পারেন :

gzip *

পরিণাম ডেকে আনবে file1.out.gz, file2.out.gzইত্যাদি

আপনি tarকেবল তখনই ব্যবহার করতে পারেন যখন আপনার একক ফাইল হিসাবে সংকুচিত সংরক্ষণাগার প্রয়োজন।

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

for i in *; do tar -czf $i.tar.gz $i; done

7
+1 - একটি একক ফাইলের জন্য ট্যার (টেপ আর্কাইভ) তৈরি করার কোনও কারণ নেই। আপনি যেটি সংকোচন করতে চান তা কেবল সংক্ষিপ্ত করুন - ফলাফলটি প্রান্তিকভাবে ছোট হবে এবং ফাইলগুলি উত্তোলনের লোকেদের অসীম জ্ঞান তৈরি করবে।
voretaq7

প্রতিটি পৃথক উপ-ডিরেক্টরি (কেবলমাত্র এক স্তর গভীর) এবং find . -maxdepth 1 -type d ! -path . | while read a_dir; do tar -zcvf ${a_dir}.tgz ${a_dir} --remove-files; done
মূলটিকে

(আমার মন্তব্যটি 5 মিনিটের পরে সম্পাদনা করতে পারে না) একটি সহজ / নিরাপদ সংস্করণ:find . -maxdepth 1 -mindepth 1 -type d -exec tar -zcvf {}.tgz {} --remove-files \;
এক্সবি।

9

@ সোভেনডাব্লুয়ের উত্তরটি তৈরি করতে (যা কেবলমাত্র বর্তমান ডিরেক্টরিতে কাজ করবে), যদি আপনার কাছে বিশাল সংখ্যক ফাইল থাকে বা এটি পুনরাবৃত্ত ডিরেক্টরি ডিরেক্টরিতে করতে চান তবে আপনিও ব্যবহার করতে পারেন

find . -type f -exec gzip \{\} \;

এবং যদি আপনাকে আউটপুটটিকে অন্য কোনও ডিরেক্টরিতে রেখে দিতে হয় (উদাহরণস্বরূপ ../target) এবং মূলগুলি সরাতে না চান তবে আপনি এর মতো কিছু করতে পারেন:

find . -type f -print | while read fname ; do
    mkdir -p "../target/`dirname \"$fname\"`"
    gzip -c "$fname" > "../target/$fname.gz"
done

1
find . -type f -exec gzip {} \;যথেষ্ট হবে। দ্বিতীয় কোড ফাঁকা স্থান এবং এই জাতীয় ফাইলের নাম সহ ব্যর্থ হবে।
ব্যবহারকারীর অজানা

কিছু শাঁস খালি like like গুলি পছন্দ করে না, এবং দ্বিতীয়টি প্রথমটির চেয়ে স্পষ্টতই আলাদা কিছু করে (এবং আমি স্পেসিংয়ের বিষয়গুলি সম্পর্কে সচেতন ছিলাম তবে এটি মোকাবেলা করা এক ধরণের কৌশল)।
ফ্লফি

আপনি যদি এই জাতীয় শেল জানেন তবে আমি আপনাকে এখানে আমার প্রশ্নের উত্তর দেওয়ার জন্য আমন্ত্রণ জানাচ্ছি : unix.stackexchange.com/questions/8647/… । আজ অবধি ব্যবহারযোগ্য এমন কোনও কিছুর নাম কেউ রাখতে পারেনি। আপনি যদি নিজের উত্তরের ঝুঁকি সম্পর্কে সচেতন হন তবে আপনার উত্তরে এটির নাম দেওয়া ভাল ধারণা হতে পারে।
ব্যবহারকারীর অজানা

@ ইউসারুননেড আমাকে (টি) সিএসএসে নিয়ে আসা হয়েছিল, যা একসময় অনাকাঙ্ক্ষিত কোঁকড়ানো ধনুর্বন্ধনী দ্বারা প্রচুর সমস্যায় পড়েছিল, যদিও এটি আর দেখা যায় না (তবে আমি এখনও {}অভ্যাসের শক্তি হিসাবে পালিয়ে এসেছি )। অন্যরা ইতিমধ্যে আপনার প্রশ্নের উত্তর হিসাবে এগুলি পোস্ট করেছে।
fluffy

বা, সমস্ত নন-বাইনারি ফাইল সংকোচন করতে:find . -type f -exec grep -Iq . {} \; -and -exec gzip {} \;
এক্সবি।

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