সমস্ত সঙ্কুচিত ফাইলের মধ্যে সন্ধান করুন এবং অনুসন্ধান করুন


9

আমি জিপ, জিজিপ, বিজিপ এবং অন্যদের মতো সমস্ত সংকুচিত ফাইল সংগ্রহের জন্য আমার হার্ড ড্রাইভটি স্ক্যান করতে চাই এবং নির্দিষ্ট ফাইলের ধরণের (যেমন চিত্রগুলির) জন্য অনুসন্ধান করা বিষয়বস্তু রাখতে চাই। অ্যান্টি-ভাইরাস 'এটি করুন, তাই আমি বিশ্বাস করি একটি উপায় থাকা উচিত।


@ রিনজুইন্ড ফাইলগুলি তালিকার মধ্যে নয় আর্কাইভের ফাইলগুলির মধ্যে অনুসন্ধান করবে। এটিযুক্ত ফাইলগুলি খুঁজে পাবেন fooতবে তা নয় foo.png
টেরডন

এটি জিপ বোমা পরীক্ষা করতে সহায়ক হতে পারে! +1
শারদ গৌতম

উত্তর:


17

সবচেয়ে সহজ পদ্ধতির সংরক্ষণাগারের বিষয়বস্তু তালিকাভুক্ত করা এবং প্রাসঙ্গিক এক্সটেনশনের ফাইলগুলি অনুসন্ধান করা হবে। উদাহরণস্বরূপ, একটি zipফাইল সহ:

$ zip -sf foo.zip | grep -iE '\.png$|\.jpg$'
  file1.jpg
  file1.png
  file2.jpg
  file2.png

-sfবিকল্প বলে zipএকটি সংরক্ষণাগার অন্তর্ভুক্ত ফাইল লিস্টে। তারপরে, লাইনটি ( ) এর শেষে বা grepএকটিতে সন্ধান করবে । বর্ধিত রেগুলার এক্সপ্রেশনের সম্ভব, তাই আমরা ব্যবহার করতে পারেন হিসাবে অথবা এবং.png.jpg$-E|-i ম্যাচিং ক্ষেত্রে অবশ করে তোলে।

তবে প্রতিটি সংরক্ষণাগার সরঞ্জামের বিষয়বস্তু তালিকাভুক্ত করার জন্য আলাদা কমান্ড রয়েছে। আমি এমন একটি স্ক্রিপ্ট লিখেছি যা বেশিরভাগ জনপ্রিয়ের সাথে কাজ করতে পারে। আপনি যদি সেই স্ক্রিপ্টটিকে সে হিসাবে সংরক্ষণ করেন list_compressed.shতবে চালাতে পারেন:

list_compressed.sh | grep -iE '\.png$|\.jpg$|\.jpeg$|\.gif$|\.tif$|\.tiff$'

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


আপনি যদি আপনার হার্ড ড্রাইভে ইমেজ ফাইলযুক্ত সমস্ত সংরক্ষণাগার সন্ধান করতে চান তবে উপরের সাথে একত্রিত করুন find:

find / -name '*.gz' -o -name '*.tgz' -o -name '*.zip' -print0 |
    while IFS= read -r -d '' arch; do    
        list_compressed.sh "$arch" | 
            grep -qiE '\.png$|\.jpg$|\.jpeg$|\.gif$|\.tif$|\.tiff$' &&
                echo "$arch contains image(s)"
    done

Find কমান্ডের সব অনুসন্ধান করবে .gz, .tgzবা .zipফাইল (হিসাবে আপনি চান আপনি অনেক এক্সটেনশন হিসাবে যোগ করতে পারেন), যারা তারপর আমার স্ক্রিপ্ট মাধ্যমে গৃহীত হয়। -qঅপ্রকাশিত, grep স্বাভাবিক আউটপুট আছে, কিছুই প্রিন্ট করা হবে। && echoসংরক্ষণাগার নাম শুধুমাত্র যদি প্রিন্ট হবে grepসফল হয়েছে।


আমার আসল প্রশ্ন অনুসারে আমি "জিপের মতো সমস্ত সংকুচিত ফাইল সংগ্রহের জন্য আমার হার্ড ড্রাইভটি স্ক্যান করতে চাই" images আপনি আর্কাইভগুলি নিজেরাই অনুসন্ধান করার জন্য সহায়তা করেছেন তবে আমি ঠিক চিহ্নিত করতে চাই যে কোন সংরক্ষণাগারটিতে চিত্র রয়েছে।
6ft ড্যান

@ 6 ফিট ড্যান দুঃখিত, আমি আসলটি দেখিনি। আপনার পোস্টের অর্থ পরিবর্তন করে এমন কোনও সম্পাদনা পুনরায় রোল করতে বা পুনরায় সম্পাদনা করতে দ্বিধা বোধ করুন। পুরো ফাইল সিস্টেমটি কীভাবে অনুসন্ধান করতে হবে তার জন্য আপডেট উত্তর দেখুন।
টেরডন

দুর্দান্ত, তবে যেহেতু আপনি কেস-সংবেদনশীলতার সাথে গ্রেপ্তার করছেন সম্ভবত আপনিও সংবেদনশীলতার সাথে কেস অনুসন্ধান করতে চান?
কোস

@ কোস হুম, এটি কেবলমাত্র পরিবর্তন -nameকরতে যথেষ্ট -iname। যাইহোক, এটির সামান্য বক্তব্য রয়েছে, অনেকগুলি সংক্ষেপণ প্রোগ্রামগুলির (উদাহরণস্বরূপ gzip) নির্দিষ্ট বর্ধনের প্রয়োজন। GZকাজ করবে না
টেরডন

3

টেরডনের মতো উন্নত নয়, তবে এটি করবে:

নিম্নলিখিত কোডটি সংরক্ষণ করুন, এমন ফোল্ডারে যেখানে আপনার সমস্ত কোড থাকে finda.sh বা আপনার পছন্দ মতো অন্য কোনও নাম:

for file in *.*; do
    if ( 7z l -slt "$file"> /tmp/$file.log); then
       echo $file:; cat /tmp/$file.log | grep -iE 'Path*'> $file.log && cat $file.log
    fi
done

তারপরে একটি দির আপনার সমস্ত সংরক্ষণাগারগুলিতে ছিল, এটি চালান এবং এটি আউটপুট:

./finda.sh 
one.7z:
Path = one/abradabra.png
Path = one/birb.png
three.rar:
Path = three/blah.png
Path = three/qwa0g.jpg
two.zip:
Path = two/whut.png

আমার আসল প্রশ্ন অনুসারে আমি "জিপের মতো সমস্ত সংকুচিত ফাইল সংগ্রহের জন্য আমার হার্ড ড্রাইভটি স্ক্যান করতে চাই" images আপনি আর্কাইভগুলি নিজেরাই অনুসন্ধান করার জন্য সহায়তা করেছেন তবে আমি ঠিক চিহ্নিত করতে চাই যে কোন সংরক্ষণাগারটিতে চিত্র রয়েছে।
6ft ড্যান

@ 6 ফিটড্যান এটি, আমার ধারণা সম্ভব, তবে এটি কিছুটা সময় নিতে পারে। মধ্য সময়ে, আমি আমার স্ক্রিপ্টে কিছু উন্নতি যুক্ত করেছি, টেরডনের সাহায্যে শুভ।
ব্লেড 19899

মনে রাখবেন যে *.*কেবলমাত্র একটি এক্সটেনশানের সাথে ফাইলগুলি মিলবে। এছাড়াও, এটি সমস্ত সংরক্ষণাগারে সমস্ত ফাইল তালিকাভুক্ত করবে , আপনি কোনও ফাইল টাইপের জন্য পরীক্ষা করছেন না।
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.