বাছাইয়ের সাথে সাবফোল্ডারগুলির বিষয়বস্তু সহ একটি ডিরেক্টরিতে ফাইল তালিকাবদ্ধ করা


9

আমি সাব-ফোল্ডারগুলির বিষয়বস্তু সহ ফাইলের আকার অনুসারে বাছাই করা একটি ডিরেক্টরি সামগ্রীর সম্পূর্ণ তালিকা তালিকাবদ্ধ করছি। এখনও আমি তালিকা এবং বাছাই করা যতক্ষণে এখনও পুনরাবৃত্তি হওয়া সত্ত্বেও এটি পরিচালনা করতে পেরেছি ls -lhSR( যতক্ষণ hনা আমি ফাইলের আকার পেতে পারি তা আমার পক্ষে অবশ্যই প্রয়োজনীয় নয় তবে)। আমি সম্ভবত স্পষ্ট কিছু উপেক্ষা করছি বা অসম্ভবকে জিজ্ঞাসা করছি তবে এখানে কোনও পরামর্শই প্রশংসিত হবে।

উত্তর:


15

আপনি খুঁজে পেতে ব্যবহার করতে পারেন:

find . -type f -printf "%s %P\n" | sort -n

Alচ্ছিক: বাইট মানগুলি মানব-পঠনযোগ্য ফর্ম্যাটে রূপান্তর করতে, এটি যুক্ত করুন:

| numfmt --to=iec-i --field=1

ব্যাখ্যা:

 find in current directory (.) all files (-type f) 

 -printf: suppress normal output and print the following:
     %s - size in bytes
     %P - path to file
     \n - new line

 | sort -n: sort the result (-n = numeric)

ওহ পারফেক্ট! আপনাকে অনেক ধন্যবাদ, এটি আমার যা প্রয়োজন ঠিক তা করেছে!
টমস

3
আমি খুশী আমার উত্তর আপনাকে সাহায্য করেছে। উত্তর গৃহীত উত্তর চিহ্নিত করতে দয়া করে বাম দিকে চেকমার্ক ক্লিক করার কথা বিবেচনা করুন। ধন্যবাদ।
pLumo

1
@ রোভো যেহেতু আপনি উত্তরটি দিয়েছেন, আপনি প্রশ্নটি উত্সাহিত করতে খুব ভাল লাগবে, সম্ভবত আপনি এটি আকর্ষণীয় এবং দরকারী বলে মনে করেছেন।
টেরডন

এটি প্রকৃতপক্ষে সত্য এবং আমি এখন এটি করেছি ;-)
পিলুমো

@ টমস উত্তরটি গ্রহণ করার জন্য কিছুক্ষণ অপেক্ষা করা ঠিক আছে (সম্ভবত একদিন বা একদিন) ঠিক যেমনটি এটি তার মতোই ভাল। উত্তরটি স্বীকৃত হয়ে গেলে, আরও উত্তরের জন্য আর কোনও উত্তর পাওয়ার উপায় নেই। এবং এ কারণেই, অনেক লোক অন্য কোনও উত্তর জমা দেওয়ার জন্য বিরক্ত করবে না, সুতরাং এর চেয়ে ভাল কিনা তা জানতে আমরা তাদের দেখার সুযোগ পাই না।
মন্টি হার্ড

7

যেহেতু আপনি কোনও নির্দিষ্ট শেল নির্দিষ্ট করেন নি, তাই zsh এর গ্লোব কোয়ালিফায়ার ব্যবহার করে এখানে একটি বিকল্প রয়েছে

setopt extendedglob

পুনরাবৃত্তি জন্য। তারপরে উদাহরণস্বরূপ:

  1. পুনরাবৃত্তভাবে প্লেইন ফাইলগুলি তালিকাবদ্ধ করুন:

    printf '%s\n' **/*(.)
  2. যাও recursively প্লেইন ফাইল তালিকাবদ্ধ করে দ্বারা rdered মধ্যে কুঁচকে গিয়েছে এল ength (অর্থাত আকার):

    printf '%s\n' **/*(.oL)
  3. যাও recursively তালিকা প্লেইন ফাইল, হে দ্বারা rdered ডি কুঁচকে গিয়েছে আকার:

    printf '%s\n' **/*(.OL)
  4. আকার হ্রাস করে ক্রমবর্ধমান প্লেইন ফাইলগুলি তালিকাবদ্ধ করুন এবং শীর্ষ 3 ফলাফল নির্বাচন করুন:

    printf '%s\n' **/*(.OL[1,3])

আপনি যদি ফাইলের আকারও চান তবে আপনি ব্যবহার করতে পারেন

du -hb **/*(.OL[1,3])

4

সঙ্গে globstarশেল বিকল্প স্থাপন করেন তখন আপনাকে globbing শেল ব্যবহার করতে পারেন:

shopt -s globstar         # don’t match hidden files
shopt -s globstar dotglob # match hidden files
stat -c"%s %n" **/* | sort -n

যদি আপনি খুব বেশি ফাইল দিয়ে এটি চেষ্টা করেন তবে আপনি একটি "তর্ক তালিকা খুব দীর্ঘ" ত্রুটি পেয়ে যাবেন। এর আশেপাশে কাজ করতে, আপনি printfএবং ব্যবহার করতে পারেন xargs:

printf "%s\0" **/* | xargs -0 stat -c"%s %n" | sort -n

আমি ঠিক বুঝতে পেরেছি যে এটি ডিরেক্টরিগুলি (4096 বাইটের আকার সহ) মুদ্রণ করে - আপনি যদি এটি না চান তবে পরিবর্তে এটি ব্যবহার করুন:

stat -c"%A %s %n" **/* | sed '/^d/d;s/\S* //' | sort -n
printf "%s\0" **/* | xargs -0 stat -c"%A %s %n" | sed '/^d/d;s/\S* //' | sort -n

উদাহরণ রান

$ tree
.
├── edits.png
├── makescript
├── new
   └── edits.png
└── test
    └── 1.png

2 directories, 4 files
$ stat -c"%s %n" **/* | sort -n
0 test/1.png
43 makescript
2160 edits.png
2160 new/edits.png
4096 new
4096 test
$ stat -c"%A %s %n" **/* | sed '/^d/d;s/\S* //' | sort -n
0 test/1.png
43 makescript
2160 edits.png
2160 new/edits.png

সুন্দর সমাধান। সন্ধানের তুলনায়, এটি লুকানো ফাইলগুলি অন্তর্ভুক্ত করে না, কীভাবে এটি অর্জন করবেন?
pLumo

@ রভো সর্বদা এগুলি ভুলে যান - আপনাকে কেবল dotglobশেল বিকল্পটি সেট করতে হবে , আমার আপডেট হওয়া উত্তরটি দেখুন।
মিষ্টান্ন

printf "%s\0" **/* | xargs -0 sh -c 'for f; do [ -d "$f" ] || stat -c "%s %n" "$f"; done' sh | sort -n
সেডের

আপনি ls -lhSd **/*যদি তালিকার অংশ হিসাবে ডিরেক্টরিগুলি মনে না করেন তবে আপনি ব্যবহার করতে পারেন । বা যদি আপনার ডিরেক্টরি নামের কোনওটিতে না থাকে .এবং আপনি যে ফাইলগুলি চান তা আপনি করতে পারেন ll -hS **/*.*বা অনুরূপ।
পিটার কর্ডেস


3

আপনার কাছে zsh না থাকলে আপনি এখনও du+ sort:

  1. মানব-পঠনযোগ্য মাপ, ডিরেক্টরিগুলির ক্রমবর্ধমান মাপ সহ:

    du --apparent-size -ah0 . | sort -zh | xargs -0L1
    
  2. কেবল ফাইল (ব্যবহার করে find):

    find . -type f -print0 |
      du --files0-from=- --apparent-size -ah0 |
      sort -zh |
      xargs -0L1
    

উভয় ক্ষেত্রেই, আমি ব্যবহারের নাল-সমাপ্ত লাইন (আপনি নির্বাচন করেছেন -0, -z, -print0অপশন), সকল বৈধ ফাইলের নামের বিরুদ্ধে নিরাপদ হতে।


0

ডিরেক্টরি গাছগুলিতে দ্রুত ইন্টারেক্টিভ ব্যবহারের জন্য যা খুব বেশি বিশাল নয়, shopt -s globstarসত্যিই দুর্দান্ত। কোনও গ্লোব টাইপের উপর ভিত্তি করে ডিরেক্টরিগুলি ফিল্টার করতে পারে না তবে আপনি যদি এটির সাথে ব্যবহার করেন ls -dতবে lsকেবলমাত্র সামগ্রীর পরিবর্তে ডিরেক্টরিটির নামটি মুদ্রণ করবেন।

আপনার llউপনামটি ধরে নিলে অন্তর্ভুক্ত রয়েছে -lh:

  # with  shopt -s globstar   in your .bashrc
ll -rSd **/*

আপনাকে এই জাতীয় আউটপুট দেবে (আমার কোড-গল্ফ ডিরেক্টরি থেকে), তবে রঙ হাইলাইট করার সাথে (যাতে ডিরেক্টরিগুলি দেখতে আরও সহজ)। নোট করুন যে ফাইলাইজ অনুসারে বাছাই করা সাব-ডিরেক্টরিতে হয়েছে ories

drwxr-xr-x 1 peter peter   70 Jun  8 07:56 casexchg
...
drwxr-xr-x 1 peter peter  342 Mar 13 18:47 parity-party
-rw-r--r-- 1 peter peter  387 Jul 29  2017 likely.cpp
-rw-r--r-- 1 peter peter  416 Aug 31  2017 true-binary.asm~
-rw-r--r-- 1 peter peter  447 Feb 23 20:14 weight-of-zero.asm
...
-rw-r--r-- 1 peter peter 6.4K Jun  1  2017 string-exponential.asm
-rwxr-xr-x 1 peter peter 6.7K Aug 31  2017 true-binary
-rwxr-xr-x 1 peter peter 6.8K Sep 17  2017 dizzy-integer
-rw-r--r-- 1 peter peter 7.5K Jul 24  2017 fibonacci/fibonacci-1G.v3-working-32b-stack-except-output.asm
-rw-r--r-- 1 peter peter 8.4K Jul 25  2017 fibonacci/perf.32bit-pop-114limb.sub-cmc.1G~
-rw-r--r-- 1 peter peter 8.4K Jul 25  2017 fibonacci/perf.32bit-pop-114limb.sub-cmc.1G
-rwxr-xr-x 1 peter peter 8.4K May 19 04:29 a.out
-rw-r--r-- 1 peter peter 8.9K Jul 25  2017 fibonacci/perf.python-xnor-2n
-rw-r--r-- 1 peter peter 9.5K Jul 26  2017 fibonacci/fibonacci-1G-performance.asm
-rwxr-xr-x 1 peter peter 9.6K Apr 12 23:25 empty-args
-rw-r--r-- 1 peter peter 9.7K Dec 18 17:00 bubblesort.asm
-rwxr-xr-x 1 peter peter 9.9K Feb  6 23:34 parity-party/a.out
-rw-r--r-- 1 peter peter 9.9K Jul 25  2017 fibonacci/fibonacci-1G-performance.asm~
...

আপনি পাইপ দিয়ে ডিরেক্টরিগুলি ফিল্টার আউট করতে পারেন grep -v '^d'

আপনি কখনও কখনও এমন একটি গ্লোব ব্যবহার করতে পারেন যা কেবল ফাইলের সাথে মেলে এবং ডিরেক্টরিগুলি নয়, যদি আপনার ফাইলের নামের একটি প্যাটার্ন থাকে। উদাহরণস্বরূপ ll -rSd **/*.jpg, বা এমনকি **/*.*আপনার ডিরেক্টরি নামের কোনওটিতে না থাকলে এবং এমনকি .আপনি যে ফাইলগুলি চান তা কাজ করে

(ডস ব্যাকগ্রাউন্ডযুক্ত লোকের জন্য: *.*ইউনিক্সে যাদুকর কিছুই নেই It এটি কেবল কোনও ডিরেক্টরি এন্ট্রির সাথে মেলে যা একটি আক্ষরিক বিন্দু রয়েছে But তবে এক্সিকিউটেবল এবং কখনও কখনও পাঠ্য ফাইল ব্যতীত ফাইলের নামগুলিতে এক্সটেনশন দেওয়া সাধারণ))

@ ডেজার্টটি উল্লেখ করে যে shopt -s dotglobএটি আপনার সমস্ত ফাইলের সাথে মেলে ।


জিএনইউ সহ find

যদি একটি lsকমান্ড লাইনে ফিট করার জন্য খুব বেশি ফাইল না থাকে তবে find -exec ls {} +সেগুলি সমস্ত কমান্ড লাইনে রাখবে যেখানে lsসেগুলি বাছাই করতে পারে।

find -not -type d -exec ls --color -lrSh {} +

সিমলিংকগুলি, নামক পাইপ, সকেট, ডিভাইস ফাইল এবং আপনার ডিরেক্টরিতে আপনি যে লাথি মারছেন তা উপেক্ষা করার -not -type dপরিবর্তে ব্যবহার করা -type f


সহ du:

du -ach | sort -h
....
4.0K    x86-modedetect-polyglot.o
8.0K    ascii-compress-base.asm
8.0K    dizzy-integer
8.0K    stopwatch-rdtsc.asm
8.0K    string-exponential.asm
8.0K    true-binary
12K     a.out
12K     bubblesort.asm
12K     casexchg
12K     empty-args
100K    parity-party
220K    fibonacci
628K    total

এখন ডিরেক্টরি নামের তালিকাতে তাদের সমস্ত সামগ্রীর যোগফলের সাথে বাছাই করা হয়েছে, তবে পৃথক ফাইলগুলি এখনও অন্তর্ভুক্ত রয়েছে।

sort -h, ওরফে --human-numeric-sort, du -hপ্রিন্টের মতো আকারের প্রত্যয় সহ সংখ্যাগুলি সাজায় । এটি ব্যবহারের জন্য উপযুক্ত du

আমি প্রায়শই ব্যবহার করি du -sch * | sort -h, বা */কেবল ডিরেক্টরিগুলি পাই।

du -sch **/* | sort -hআপনি উপরোক্ত আউটপুট দিতে হবে, আপনি যদি ভুলে যান যে duএকটি -aবিকল্প আছে।

(আমি কেবল এটির জন্য সময় নিলাম কারণ আমি একটি উত্তর পোস্ট করছি inte ইন্টারেক্টিভ ব্যবহারের জন্য, আমি সম্ভবত স্রেফ ব্যবহার করতে পারতাম du -sch **/*

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