আমি কীভাবে কেবল এলএস ব্যবহার করে খালি খালি ফাইলগুলি তালিকাভুক্ত করতে পারি?


36

lsলিনাক্স ব্যবহার করে খালি (আকার> 0) নয় এমন সমস্ত ফাইল আমি কীভাবে তালিকাভুক্ত (ব্যবহার করে ) করতে পারি ?

উত্তর:


49

আমি find dirname -not -empty -lsজিএনইউ খুঁজে ধরে ধরে ব্যবহার করব ।


1
ডাউনওয়েট কে বোঝানোর জন্য কারও যত্ন?
দেনিথ

সম্ভবত কারণ প্রশ্নকারী জিজ্ঞাসা করেছিল lsএবং আপনি ব্যবহার করেছেন find;) যদিও আমি
উত্সাহিত করেছি

2
আপনি যদি "Find। -Not -empty -ls" ব্যবহার করেন তবে এটি বর্তমান ডিরেক্টরিটি অন্তর্ভুক্ত করবে (যেমন "এটি" আউটপুটে "।"), কেবলমাত্র বর্তমান ফাইলগুলিকে অন্তর্ভুক্ত করতে "Find। -Type f -not -empty -ls" ব্যবহার করুন
ব্যবহারকারী 672009

19

এটি ls সন্ধানের জন্য একটি কাজ যথেষ্ট শক্তিশালী নয়।

find -maxdepth 1 -size +0 -print

-maxdepth 1 - এটি কেবল বর্তমান দির অনুসন্ধান করতে, সমস্ত উপ-ডায়ার সন্ধান করতে সরিয়ে ফেলতে বা 2, 3 বা আরও বেশি মাত্রায় নিচে নাম্বার পরিবর্তন করতে বলে।

-size +0এটি 0বাইটের চেয়ে বড় আকারের ফাইলগুলির সন্ধান করতে বলে । 0আপনি চান যে কোনও আকারে পরিবর্তন করা যেতে পারে।

-print এটি খুঁজে পাওয়া ফাইলটির পুরো পথটি মুদ্রণ করতে বলে

সম্পাদনা:
দেরী সংযোজন: আপনার সম্ভবত -type fউপরের স্যুইচটি যুক্ত করা উচিত । এটি কেবল ফাইলগুলি অনুসন্ধান করতে বলে। এবং নীচে মন্তব্যগুলিতে উল্লিখিত হিসাবে, -printস্যুইচটি সত্যই প্রয়োজন হয় না।


1
কোনও সতর্কতা এড়াতে আপনার -maxdepth 1আগে রাখা উচিত -size +0। এছাড়াও -printডিফল্ট অ্যাকশন, তাই এটি প্রয়োজন নেই।
সিউরাস

@ ক্রিস - আমার জন্য কোনও সতর্কতা নেই (সাইগউইন)
নিফেল

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


8
ls -l | awk '{if ($5 != 0) print $9}'

আপনি যদি ব্যবহারটি করতে আগ্রহী হন তবে আপনার lsকাছ থেকে কিছুটা সহায়তা দরকার awk


7

এলএসের কাছে ফাইলগুলি ফিল্টার করার প্রায় কোনও বিকল্প নেই: এটি কাজ নয়। ফিল্টারিং ফাইলগুলি সহজ ক্ষেত্রে (গ্লোব্বিংয়ের মাধ্যমে) শেলের কাজ এবং জটিল মামলার সন্ধানের কাজ।

LZsh এ , আপনি গ্লোব্বিং বাছাই করতে পারেন কেবল এমন ফাইলগুলি ধরে রাখতে যেগুলির আকার> ০ ( .কোয়ালিফায়ার নিয়মিত ফাইলগুলিতে সীমাবদ্ধ করে):

ls *(.L+0)

অন্যান্য শেল ব্যবহারকারীদের অবশ্যই ব্যবহারগুলি ব্যবহার করা উচিত। জিএনইউ অনুসন্ধানের সাথে (যেমন বেশিরভাগ লিনাক্সে পাওয়া যায়):

find -maxdepth 1 -type f ! -empty -exec ls {} +

একটি পসিক্স-কমপ্লায়েন্ট উপায় হ'ল:

find . -type f -size +0c -exec ls {} + -o -name . -o -prune

তাহলে lsশুধু একটি উদাহরণ ছিল না এবং আপনি নিছক চাক্ষুষ পরিদর্শন মনস্থ করা, আপনি আকার দ্বারা বাছাই করতে পারে: ls -S


3
 $ find /* -type f ! -size 0

আপনি যদি কেবল ডিরেক্টরি না করে খালি সমস্ত ফাইল চান তবে আরও ভাল কাজ করবে।


1

বাশ 4.0+

shopt -s globstar
shopt -s nullglob
for file in **/*; do  test -f "$file" && [[ -s "$file" ]] && echo "$file"; done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.