কেবল তালিকার তালিকা ফাইল


16

মজাদার ঘটনা: আপনি যদি সংরক্ষণাগার ব্যবস্থাপক ব্যবহার করেন এবং একটি .tar.gz নিষ্ক্রিয় করেন যাতে আপনার "ডিরেক্টরি ডিরেক্টরি কাঠামো" বন্ধ থাকে তবে আপনি একটি টারবম্ব পাবেন

tar -ztfসমস্ত ফাইল এবং ডিরেক্টরিগুলি একটি টার ফাইলটিতে তালিকাভুক্ত করে। ডিরেক্টরি কাঠামো ছাড়াই কি সমস্ত ফাইলকে একটি টার ফাইলটিতে তালিকাভুক্ত করার উপায় আছে ?


আপনি 'টারবম্ব' প্রভাবটি পেতে পারেন tar xvzf my_tar.tar.gz --transform 's/.*\///'। তবে দুর্ভাগ্যক্রমে এটি পরিবর্তিত হয় না এটি tপরিবর্তে তালিকার সাথে কীভাবে প্রদর্শিত হয় x
ire_and_curses

4
যে বিষয়টি আমাকে বিরক্ত করে তা হ'ল এমনকি ভাল কাঠামোগত সংরক্ষণাগারগুলি এত সহজেই গণ আহরণের অস্ত্র তৈরি করতে ব্যবহার করা যেতে পারে।
ইয়েরো অ্যালটনেন

উত্তর:


17

আমি ম্যান পৃষ্ঠা থেকে এটি করার কোনও উপায় দেখতে পাচ্ছি না তবে আপনি সর্বদা ফলাফলগুলি ফিল্টার করতে পারেন। নিম্নলিখিতটি আপনার ফাইলের নামগুলিতে কোনও নতুন লাইন ধরে নেই:

tar tzf your_archive | awk -F/ '{ if($NF != "") print $NF }'

কিভাবে এটা কাজ করে

ক্ষেত্রের বিভাজকটি সেট করে /, সর্বশেষ ক্ষেত্রটি awk( $NF) এর নাম হয় কোনও ফাইলের নাম প্রক্রিয়া করা হলে ফাইল নাম হয় বা ডিরেক্টরি নাম প্রক্রিয়াকরণ করা হলে খালি হয় (ডিরেক্টরিতে নামের পরে tarএকটি স্ল্যাশ যোগ করে)। সুতরাং, আমরা মূলত awkশেষ ক্ষেত্রটি খালি না হলে মুদ্রণ করতে বলছি ।


Awk এর সাথে খুব সুন্দর কাজ :)
Eero Aaltonen

5

সদ্ব্যবহার জোসেফ আর এর পরামর্শ এক Regex ব্যবহার করতে পারেন [^/]$থেকে grepদিয়ে শেষ না লাইন জন্য তাকিয়ে ফাইলে /

tar tzf archive.tar.gz | grep -e "[^/]$"


এটি এখনও ন্যায়বিচারের foo/barবিপরীতে আউটপুট দেয় bar। আপনি চান grep -Eo '[^/]+$'(জিএনইউ গ্রেপ সহ)।
স্টাফেন চেজেলাস 26:55

4

ধরে নিচ্ছি যে ফাইলের নামের কোনওটিতেই নতুন লাইন নেই:

tar -tf foo.tar | sed -e 's#.*/##' -e '\#.#!d'

প্রথম সেড কমান্ড /একটি লাইনে শেষের আগে সমস্ত কিছু সরিয়ে দেয় , যাতে কেবলমাত্র ফাইল নামের অংশটি মুদ্রিত হয়। দ্বিতীয় কমান্ড লাইনগুলি মুছে দেয় যা এখন খালি, অর্থাৎ যে রেখাগুলি শেষ হয়েছিল /, যা ডিরেক্টরি রয়েছে।


সেড: -e এক্সপ্রেশন # 2, চর 2: অজানা আদেশ: `/ 'এবং সেড সিনট্যাক্সটি খুব বেশি .. স্বজ্ঞাত অনুভূত হয় না
Eero Aaltonen

@ EeroAaltonen আমি সেড কমান্ডটি ঠিক করেছি। প্রকৃতপক্ষে, বাক্য গঠনটি কিছুটা রহস্যজনক (আমি আমার উত্তরে ব্যাখ্যাগুলি অন্তর্ভুক্ত করি না)।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

2

সঙ্গে pax(পড়ুন করার POSIX কমান্ড tarফাইল):

pax -'s@.*/@@' < file.tar

(এটি ডিরেক্টরি সহ সকল ফাইলের তালিকা নির্ধারণ করে)।

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