খালি দেখায় তবে নয় এমন ফাইলগুলি সহ একটি নির্দিষ্ট ডিরেক্টরিতে সমস্ত খালি ফাইল এবং ফোল্ডারগুলি কীভাবে খুঁজে পাবে?


18

ধরা যাক যে আমার ফোল্ডারে ~/listআমার নিজের সাব-ফোল্ডার এবং সাব-সাব-ফোল্ডার ইত্যাদির সাথে প্রত্যেকের প্রচুর পরিমাণে ফোল্ডার রয়েছে এবং প্রায় প্রতিটি স্তরে প্রচুর ফাইল রয়েছে। তবে এই ফাইলগুলি এবং ফোল্ডারগুলির মধ্যে কিছু খালি রয়েছে, তাই আমি কীভাবে খালি ফাইল এবং ফোল্ডারগুলি সন্ধান করার জন্য পুনরুক্তি করে সেগুলির মাধ্যমে অনুসন্ধান করতে পারি? এবং তারপরে এগুলি ফাইলের অবস্থানের তালিকায় প্রদর্শন করুন যাতে আমি জানি যে প্রত্যেকে কোথায় আছে (এটিও স্পষ্ট হওয়া উচিত যে কোন ফাইল এবং কোন ফোল্ডার কারণ সমস্ত ফাইলের ফাইলের এক্সটেনশন নেই)। আমি জিনোম ৩.১৮ সহ উবুন্টু জিনোম 15.10 চালাচ্ছি।

দয়া করে নোট করুন যে এটি খুব কার্যকর হবে যদি এটি আমাকেও জানায় যে কোনও ফাইল খালি দেখায় তবে তা ছিল না (উদাহরণস্বরূপ যদি এটিতে ফাঁকা বা লাইনব্রেক থাকে বা এটিতে কিছু রয়েছে)। এবং একটি আসল ফাঁকা ফাইল এবং আউটপুটে খালি দেখায় এমন একটির মধ্যে পার্থক্য দেখাতে পারে।


1
একটি খালি ফাইল, কোনও অক্ষর নেই এমন একটি ফাইল? (ফাঁকা স্থান, লাইন ব্রেক এবং ট্যাব হতে পারে)?
জ্যাকব ভিলিজ

@ জ্যাকবভ্লিজম: ঠিক আছে, আগে আমি কেবল 0 বাইটের ফাইলগুলি ভাবছিলাম, তবে এখন আপনি এটি উল্লেখ করেছেন যে কেউ আমাকে ফাঁকা বা লাইনব্রেক বা অন্য কিছু দিয়ে একটি ফাইল দিতে যথেষ্ট পাগল হতে পারে, তাই আমি সেগুলিও সনাক্ত করতে চাই, তবে আমি আউটপুটটিকে একটি আসল ফাঁকা ফাইল এবং কেবল খালি দেখতে দেখতে একটির মধ্যে পার্থক্য করতে চাই।

উত্তর:


25

থেকে man find

    -empty File is empty and is either a regular file or a directory.

সুতরাং খালি ফাইল এবং ডিরেক্টরি উভয়ই সন্ধানের জন্য এটি যথেষ্ট

find ~/lists -empty

প্রকারটি নির্দেশ করতে, আপনি %yআউটপুট বিন্যাস নির্দিষ্টকরণকারক ব্যবহার করতে পারেন

          %y     File's type (like in ls -l), U=unknown type (shouldn't happen)

যেমন

find ~/lists -empty -printf '%y %p\n'

বা একটি বাহ্যিক প্রোগ্রাম যেমন lsএকটি --classifyবিকল্প অন্তর্ভুক্ত ব্যবহার করুন

    -F, --classify
          append indicator (one of */=>@|) to entries

অর্থাত

find ~/lists -empty -exec ls -Fd {} \;

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

find ~/list \( -empty -o \( -type f -a ! -exec grep -qm1 '[^[:blank:]]' {} \; \) \) -exec ls -Fd {} \;

(হয় ফাঁকা, অথবা একটি ফাইল এবং গ্রেপ কমপক্ষে একটি খালি খালি অক্ষর সনাক্ত করে না)। সম্ভবত আরও ভাল উপায় আছে।


দুঃখিত, আমি কিছু মিস করেছি, আমার প্রশ্নের সম্পাদিত সংস্করণটি দেখুন। এটি যোগ করার জন্য খুব বেশি হওয়া উচিত নয়।

11

~/listফোল্ডার থেকে :

find . -empty -type d

খালি ডিরেক্টরি তালিকা এবং

find . -empty -type f

খালি ফাইল তালিকা করার জন্য।

find . -type f -exec bash -c 'if [ `cat "{}" |wc -w` -eq 0 ]; then echo "file - {}";fi' \; -or -empty -exec bash -c "echo dir - {}" \; 

সাদা স্থান এবং খালি লাইন সহ খালি ফোল্ডার এবং ফাইল তালিকাভুক্ত করার জন্য


এবং এটি কি পুনরাবৃত্তভাবে সাব-ফোল্ডারগুলি এবং তাদের বিষয়বস্তুগুলি তালিকাভুক্ত করবে?

এটি পুনরাবৃত্তভাবে খালি ফাইল এবং ফোল্ডার প্রদর্শন করবে
এডিডি

দুঃখিত, আমি কিছু মিস করেছি, আমার প্রশ্নের সম্পাদিত সংস্করণটি দেখুন। এটি যোগ করার জন্য খুব বেশি হওয়া উচিত নয়।

[ `grep -c [[:alnum:]] "{}"` -eq 0 ]সেটগুলিতে কেবল অক্ষরযুক্ত ফাইলগুলি দিয়ে দেওয়া হবে [A-Za-z0-9]
কোস

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