কিভাবে অন্য ডিরেক্টরিতে একটি tar.gz সঙ্কুচিত করবেন


270

আমার একটি সংরক্ষণাগার আছে

* .tar.gz

গন্তব্য ডিরেক্টরিতে আমি কীভাবে এটি সঙ্কুচিত করতে পারি?


9
সব ডাউনভোটস কেন? জাস্ট-সি এর চেয়েও বেশি বিকল্প রয়েছে (এবং সম্ভবত তার সংস্করণ এটি সরবরাহ করে না)।
আলফ

2
স্ট্যাক ওভারফ্লো প্রোগ্রামিং এবং বিকাশের প্রশ্নের জন্য একটি সাইট। এই প্রশ্নটি অফ-টপিক হিসাবে উপস্থিত বলে মনে হচ্ছে কারণ এটি প্রোগ্রামিং বা উন্নয়ন সম্পর্কিত নয়। সহায়তা কেন্দ্রে আমি এখানে কোন বিষয় সম্পর্কে জিজ্ঞাসা করতে পারি তা দেখুন । সম্ভবত সুপার ইউজার বা ইউনিক্স ও লিনাক্স স্ট্যাক এক্সচেঞ্জ জিজ্ঞাসা করতে একটি ভাল জায়গা হবে।
jw

@jww আমি আপনার পয়েন্টটি দেখার সময় আমাদের কাছে এই ফোরামে নাম tarএবং gzচারপাশে ট্যাগ রয়েছে । একটি নির্দিষ্ট ডিরেক্টরিতে একটি টারবাল উত্তোলন শেল স্ক্রিপ্টের অংশ হতে পারে এবং প্রোগ্রামিংয়ের অংশ হতে পারে। আমার ধারণা এই জাতীয় প্রশ্নটি তখন কোনও ফোরামে জিজ্ঞাসা করা যেতে পারে।
Alfe

উত্তর:


319

আপনি যদি Gnu সংস্করণ ব্যবহার করছেন তবে আপনার পছন্দের টার্গেট ডিরেক্টরি দিতে আপনি বিকল্পটি -C(বা --directoryআপনি দীর্ঘ বিকল্প পছন্দ করেন) ব্যবহার করতে পারেন tar। ডিরেক্টরি উপস্থিত থাকতে হবে:

mkdir foo
tar -xzf bar.tar.gz -C foo

আপনি যদি tarকোনও নির্দিষ্ট ডিরেক্টরিতে এক্সট্র্যাক্ট করতে সক্ষম না ব্যবহার cdকরেন তবে কল করার আগে আপনি কেবল আপনার টার্গেট ডিরেক্টরিতে প্রবেশ করতে পারেন tar; তারপরে অবশ্যই আপনার সংরক্ষণাগারটিতে অবশ্যই একটি সম্পূর্ণ পথ দিতে হবে। আশেপাশের স্ক্রিপ্টকে প্রভাবিত করতে এড়াতে আপনি স্কোপিং সাবশেলে এটি করতে পারেন:

mkdir foo
(cd foo; tar -xzf ../bar.tar.gz)  # instead of ../ you can use an absolute path as well

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

TARGET_PATH=a/very/complex/path/which/might/even/be/absolute
mkdir -p "$TARGET_PATH"
(cd "$TARGET_PATH"; tar -xzf -) < bar.tar.gz

107
gzip -dc archive.tar.gz | tar -xf - -C /destination

বা, জিএনইউ টারের সাথে

tar xzf archive.tar.gz -C /destination

3
আমি gzipটারটি জিপড সংরক্ষণাগারগুলি বুঝতে না পারার ক্ষেত্রে ব্যবহার করার ধারণাটি পছন্দ করি ।
আলফ

4

চায়ের myArchive.tar করতে / destinationDirectory

আদেশগুলি:

cd /destinationDirectory
pax -rv -f myArchive.tar -s ',^/,,'

0

আপনি ব্যবহার করতে পারেন জন্য অন্য ফোল্ডারে untar একাধিক .tar.gz ফাইল লুপ। নিম্নলিখিত কোডটি স্ক্রিপ্টের আর্গুমেন্ট হিসাবে / গন্তব্য / ফোল্ডার / পাথ গ্রহণ করবে এবং বর্তমান গন্তব্য / গন্তব্য / ফোল্ডার / পাথে উপস্থিত সমস্ত .tar.gz ফাইলগুলিকে অবিচ্ছিন্ন করবে।

if [ $# -ne 1 ];
 then
 echo "invalid argument/s"
 echo "Usage: ./script-file-name.sh /target/directory"
 exit 0
fi
for file in *.tar.gz
do
    tar -zxvf "$file" --directory $1
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.