'টার' আনপ্যাক করুন তবে এক্সট্রাক্ট করার জন্য ডিরেক্টরি নাম পরিবর্তন করুন


26
tar -tf filename.tar
folder1/file
folder1/name
[...]

আমি বের করে আনতে চাই ফাইল এবং নাম , এর folder2 । এটি কি ওয়ান-লাইনার হিসাবে করা যায়?

উত্তর:


35

ব্যবহার করুন -Cএবং --strip-components(দেখুন man tar)।

উদাহরণ:

mkdir FOLDER
# for remote tar file
curl -L ’remote_tar_file' | tar -xz - -C FOLDER --strip-components=1

# for local tar file
tar -xzf FILENAME -C FOLDER --strip-components=1

ব্যাখ্যা:

-Cপতাকা অনুমান একটি ডিরেক্টরি জায়গা আগে থেকেই তাই আলকাতরা ফাইলের বিষয়বস্তু তা সম্প্রসারিত করা যেতে পারে। অতএব mkdir FOLDER

--strip-componentsপতাকা যখন একটি আলকাতরা ফাইল স্বাভাবিকভাবেই একটি ফোল্ডারের মধ্যে নিজেই প্রসারিত করবে বলা যাক, GitHub যেখানে এটি উদাহরণ মতো ব্যবহার করা হয় repo-name-masterফোল্ডার। অবশ্যই আপনার এখানে তৈরি প্রথম স্তরের ফোল্ডারটির প্রয়োজন হবে না তাই আপনার --strip-componentsজন্য 1স্বয়ংক্রিয়ভাবে সেই প্রথম ফোল্ডারটি সরিয়ে ফেলা হবে। বৃহত্তর সংখ্যাটি সেট করা হয় গভীর নীড়যুক্ত ফোল্ডারগুলি সরানো হয়।


আমি পড়েছি man tar। স্পট করেনি --strip-components। দুর্দান্ত একটি
ফিলিপ আলভারেজ

1
tar-1.14 - স্ট্রিপ-পাথ ব্যবহার করে, টার-1.14.90 + - স্ট্রিপ-উপাদান ব্যবহার করে। এখানে সমস্যা?
মিখাইল মোসকালেভ

অনলাইন ম্যানুয়াল অনুসারে , যদি এটি কোনও উদাহরণ দেয় এবং কেবল স্যুইচগুলিই না দেয় তবে আমি এটি উত্থাপন করব not যুক্তি শৈলীর বিভ্রান্তির জন্ম দেয়।
আয়ান

টার-এক্সজেড-এ ভুলে গেছি, আমার ধারণা। আমার জন্য ব্যর্থ। আমি ভেবেছিলাম যে আমি এই কারণটি এই কারণেই ব্যবহার করেছি ...
জন ক্যারেল

17

আপনি --transformআরও কিছুটা নমনীয়তার জন্য বিকল্পটিও ব্যবহার করতে পারেন । এটি যে কোনও এসড রিপ্লেসমেন্ট (গুলি) অপারেশন গ্রহণ করে।

উদাহরণস্বরূপ, আমি এইভাবে একটি নতুন ডিরেক্টরিতে একটি লিনাক্স টারবল বের করি যাতে আমি কোনও প্যাচ প্রয়োগ করতে পারি:

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