Tar.gz থেকে কীভাবে নির্দিষ্ট ফাইল (গুলি) বের করা যায়


104

আমরা কীভাবে একটি বড় টার.gz ফাইল থেকে নির্দিষ্ট ফাইলগুলি বের করতে পারি? আমি এই প্রশ্নের মধ্যে একটি টার থেকে ফাইলগুলি নেওয়ার প্রক্রিয়াটি পেয়েছি কিন্তু যখন আমি সেখানে উল্লিখিত আদেশটি চেষ্টা করেছি, তখন আমি ত্রুটি পেয়েছি:

$ tar --extract --file={test.tar.gz} {extract11}
tar: {test.tar.gz}: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now

এরপরে আমি কীভাবে একটি ফাইল বের করব tar.gz?


মনে রাখবেন যে, কোনো সমাধান প্রথম সমগ্র সংরক্ষণাগার ডিকম্প্রেস করতে হবে: superuser.com/questions/655739/... আপনি যে এড়াতে চান তাহলে, আপনি এই ধরনের Zip হিসাবে অন্য ফরম্যাটে ব্যবহার করার প্রয়োজন হবে। জিপ তবে কম কম্প্রেশন দেবে যেমন পৃথক ফাইল আলাদাভাবে সংকোচন: superuser.com/questions/1013309/... আমি ভাবছি একটি বিন্যাসে উভয় গতি এবং একটি ফাইল বের করে আনতে ক্ষমতা সমর্থন করে না থাকলে।
সিরো সান্তিলি 事件 改造 中心 法轮功 六四 事件 事件

উত্তর:


119

আপনি ব্যবহার করতে পারেন tar -zxvf <tar filename> <file you want to extract>

আপনার অবশ্যই ফাইলের নামটি যথাযথভাবে লিখতে হবে tar ztf test.tar.gzshows যদি এটি উদাহরণস্বরূপ বলে ./extract11, বা some/bunch/of/dirs/extract11, আপনাকে যা দিতে হবে তা (এবং ফাইলটি ঠিক সেই নামে প্রদর্শিত হবে, প্রয়োজনীয় ডিরেক্টরিগুলি স্বয়ংক্রিয়ভাবে তৈরি হয়ে যাবে)।

  • -x: টর্কে ফাইলগুলি উত্তোলনের নির্দেশ দেয়।
  • -f: ফাইলের নাম / টার্বল নাম নির্দিষ্ট করে।
  • -v: ভার্বোজ (ফাইলগুলি বের করার সময় অগ্রগতি দেখান)।
  • -z: gzip এর মাধ্যমে ফিল্টার সংরক্ষণাগার, .gz ফাইলগুলি সংক্ষেপিত করতে ব্যবহার করুন।

$ tar -zxvf test.tar.gz extract11 tar: extract11: Not found in archive tar: Error exit delayed from previous errors
অঙ্কিত বশিষ্ঠ

1
তারপরে এটি ব্যবহার করে দেখুন। tar tf archive.tar.gz | grep extract11অনুগ্রহ করে দেখুন যে এক্সট্র্যাক্ট 11 সংরক্ষণাগারে রয়েছে কিনা
হরিশ.ভেনক্যাট

8
আপনার অবশ্যই ফাইলের নামটি যথাযথভাবে লিখতে হবে tar ztf test.tar.gzshows যদি এটি উদাহরণস্বরূপ বলে ./extract11, বা some/bunch/of/dirs/extract11, আপনাকে যা দিতে হবে তা (এবং ফাইলটি ঠিক সেই নামে প্রদর্শিত হবে, প্রয়োজনীয় ডিরেক্টরিগুলি স্বয়ংক্রিয়ভাবে তৈরি হয়ে যাবে)।
ভোনব্র্যান্ড

আমি এখানে একটি পয়েন্ট যুক্ত করতে চাই, -zএইচপি-ইউএক্সের মতো ইউনিক্সের কয়েকটি সংস্করণে বিকল্পটি কাজ করে না।
অঙ্কিত বশিষ্ঠ

1
@ পিজে-ব্রুনেট: না, fঅবশ্যই শেষ হতে হবে না। তবে এটি অবশ্যই ফাইলের নাম অনুসারে অনুসরণ করা উচিত। আলকাতরা নামের পরে অন্যান্য সমস্ত বিকল্প সঙ্গে এই উদাহরণ কাজ করে জরিমানা: tar -f mytar.tar.gz -zxv dir/somefile। এটি "mytar.tar.gz" থেকে "dir / somefile" আহরণ করে।
mivk

34

ধরে নেওয়া যাক আপনার কাছে একটি টারবাল বলা হয়েছে lotsofdata.tar.gzএবং আপনি কেবলমাত্র জানেন যে সেখানে একটি ফাইল রয়েছে যা আপনি চান তবে আপনি যা মনে রাখতে পারেন তা হ'ল এর নামটিতে শব্দটি রয়েছে contract। আপনার দুটি বিকল্প রয়েছে:

হয় আপনার টার্বলের বিষয়বস্তু ব্যবহার করুন tarএবং grepতালিকাবদ্ধ করুন যাতে আপনি যে অংশটি জানেন তার সাথে মেলে এমন কোনও ফাইলের পুরো পথ এবং নাম খুঁজে পেতে পারেন এবং তারপরে tarসেই ফাইলটি বের করার জন্য আপনি এখন তার সঠিক বিবরণ জানতে পারবেন, বা আপনি দুটি ব্যবহার করতে পারবেন আপনার ফাইলের নামটি যা আপনি সামান্যই জানেন না তার সাথে মেলে এমন সমস্ত ফাইল সরিয়ে নেওয়ার জন্য অল্প পরিচিত স্যুইচগুলি - আপনাকে এই বিকল্পটির জন্য পুরো নাম বা তার পথের কোনও অংশই জানতে হবে না। বিশদটি হ'ল:

বিকল্প 1

$ tar -tzf lotsofdata.tar.gz | grep contract

এই নামগুলির মধ্যে আপনার পরিচিত অংশটি রয়েছে এমন সমস্ত ফাইলের বিশদ তালিকাবদ্ধ করবে। তারপরে আপনি যা ব্যবহার করতে চান তা উত্তোলন করুন:

$ tar -xzf lotsofdata.tar.gz <full path and filename from your list above>

./এটি কাজ করার জন্য আপনার পাথের সামনে আপনার প্রয়োজন হতে পারে ।

বিকল্প 2

$ tar -xzf lotsofdata.tar.gz --wildcards --no-anchored '*contract*'

আপনার কাছে যা আপনি সহজ বা সবচেয়ে দরকারী বলে মনে করেন।


বিরক্তি প্রকাশ করতে ব্যবহৃত। শেষ কমান্ডের একটি টাইপো: আমি নকল -xzf। এই সুইচগুলির কেবল একটি উদাহরণ থাকতে হবে।
ভেন্ডি ক্রিকস

tar -xzf lotsofdata.tar.gz <full path and filename from your list above>আমার ./জন্য পুরো পথের শুরুর দিকে উপহার দেওয়ার জন্য কাজ করেছিলেন
ব্যবহারকারীর 13107

আপনার এগুলি নিয়ে ধৈর্য ধরতে হতে পারে, কিছুক্ষণ সময় নিয়েছে ... এছাড়াও সম্ভবত এটি সুস্পষ্ট, তবে এটি বর্তমান ডিরেক্টরিতে সম্পূর্ণ ডিরেক্টরি কাঠামোটি বের করে আনবে, এমনকি যদি সেই ডিরেক্টরিগুলি এখনও বিদ্যমান না থাকে।
পিজে ব্রুনেট

বিএসডি টার (কমপক্ষে ম্যাকোজে) --wildcardsঅপশনটি সমর্থন করে না । আমি এখনও এর সাথে একই রকম আচরণ করতে সক্ষম হয়েছি -x -O *foo*fooআমার ক্ষেত্রে ফাইলের নাম ছিল, কারণ আমি জানতাম যে ফাইলটি ফু দিয়ে শেষ হয়েছে।
এরিক হু

6

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

যাইহোক, উপরের কোন কৌশল আমার কাজের জন্য ভাল বলে মনে হচ্ছে না। আমি লোকটি পড়ে শেষ করেছি এবং এই বিকল্পটি পেয়েছি --files-from, সুতরাং আমার চূড়ান্ত সমাধানটি

gunzip < thousands.tar.gz | tar -x -v --files-from hundreds.list -f -

এবং এটি একটি কবজ মত কাজ করে।

আপডেট: তালিকার ফাইলটিতে আপনার দেখতে যেমন ফর্ম্যাট থাকে তেমন হওয়া উচিত tar -tvf, অন্যথায় আপনি কোনও ফাইল বের করতে সক্ষম হবেন না।


2

যদি আপনি বন্ধনীগুলি বাদ দেন তবে আপনার উদাহরণটি আমার পক্ষে কাজ করে

$ tar --extract --file=test.tar.gz extract11

যদি আপনার ফাইলের এক্সট্রাক্ট 11 একটি সাবফোল্ডারে থাকে, আপনার টার্বলের মধ্যে পথটি নির্দিষ্ট করা উচিত।

$ tar --extract --file=test.tar.gz subfolder/extract11

$ tar --extract --file=test.tar.gz extract11 tar: extract11: Not found in archive tar: Error exit delayed from previous errors
অঙ্কিত বশিষ্ঠ

তারপরে অবাকভাবে এক্সট্র্যাক্ট 11 টি-ফর্মে নেই। আপনার আপেক্ষিক পথ সরবরাহ করা প্রয়োজন তা নিশ্চিত হন। সম্পাদনা দেখুন
বার্নহার্ড

1

Tar.gz ফাইল থেকে নির্দিষ্ট ফাইলগুলি আহরণের উদাহরণ নীচে সন্ধান করুন।

স্থানীয় ফাইল থেকে:

$ tar xvf file.tgz path/README.txt 2nd_file.txt

দূরবর্তী ইউআরএল থেকে:

$ curl -s http://example.com/file.tgz | tar xvf - path/README.txt 2nd_file.txt
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.