ইউনিক্সে "ls" ব্যবহার করার সময় প্রথম ডিরেক্টরিগুলি কীভাবে ফাইল ইত্যাদি ইত্যাদি সাজানো যায়


91

আমি lsকমান্ডটি প্রথমে ডিরেক্টরি এবং তারপরে ফাইলগুলি প্রদর্শন করতে চাই । আমি চেষ্টা করেছিলাম:

ls -la | sort -k 1

তবে আমি একটি ভুল আদেশ পেয়েছি।


এটি কারণ ব্যবহারের -আগে আসেdsort
নিফেল

4
ওল্ড টাইম ইউনিক্সের হেডস (প্রাক-জিইউআই বয়স থেকে প্রাপ্ত ব্যক্তিরা) তাদের ফোল্ডারের নামগুলি মূলধন করে তোলে এবং ফলটি স্বয়ংক্রিয়ভাবে পাওয়ার জন্য সরল-ফাইলের নামকে চূড়ান্ত করে না।
জে রবার্ট

দরকারী প্রশ্ন! সম্ভবত এটি সহজ এবং টার্মিনাল রঙগুলিকে ভেঙে দেয় না এমন একটিটির স্বীকৃত উত্তর পরিবর্তন করার সময় এসেছে?
আইপিপি

চেষ্টা করুনls -lh --group-directories-first
ডায়োগো

উত্তর:


28

নীচের কমান্ডটি ডিরেক্টরিগুলি প্রথম, সাধারণ ফাইলগুলি দ্বিতীয় এবং তৃতীয় লিঙ্কগুলি তালিকাভুক্ত করবে।

ls -la | grep "^d" && ls -la | grep "^-" && ls -la | grep "^l"

এছাড়াও, কী-স্ট্রোকগুলি সংরক্ষণ করার জন্য এই কমান্ডটির জন্য একটি উপনাম তৈরি করা একটি দুর্দান্ত ধারণা তৈরি করবে ।

সম্পাদনা:

আপনি যদি প্রথমে ডিরেক্টরিগুলি চান এবং তারপরে ডিরেক্টরিটি দ্বিতীয় নয় এমন সবকিছু ব্যবহার করুন:

ls -la | grep "^d" && ls -la | grep -v "^d"


1
এই কমান্ডটি ফোল্ডারে সকেট বা FIFO রয়েছে এমন সমস্ত কিছু তালিকাভুক্ত করে না
স্টাডার

1
সম্পাদিত সংস্করণটি এখনও অন্য ধরণের সাথে কাজ করা উচিত। প্রথম গ্রেপ 'ডি' দিয়ে শুরু হওয়া সমস্ত কিছু বলে, এবং দ্বিতীয়টি 'ডি' দিয়ে শুরু না হওয়া সমস্ত কিছু বলে। অবশ্যই সবকিছুই বিজ্ঞাপন দিয়ে শুরু হয় বা হয় না, তাই না?
Ry4an ব্রাস

1
@Mark - না কেন শুধু একটি করুন: ls -la | grep "^d" && ls -la | grep "^-" && ls -la | grep -v -E "^d|^-|^total"?
এফটিটিডব্লিউ

1
@ এফসিটিডাব্লু-র কমান্ডকে একটি ওএসএক্স এলিফ বানানোর জন্য, এটি আপনার ~ /। প্রোফাইলে যুক্ত করুন:alias la="ls -la | grep \"^d\" && ls -la | grep \"^-\" && ls -la | grep -E \"^d|^-\" -v | grep -v \"^total\""
এলিটরালমাইন্ড

2
আমি একটি কার্যকরী সংক্ষিপ্ত স্বরলিপি পেয়েছি: ls -la|grep ^d;ls -la|grep -v ^d(উদ্ধৃতিগুলির প্রয়োজন হয় না এবং এর সাথে প্রতিস্থাপন করা &&হয় ;)। আরেকটি বিকল্প একটি পরিবর্তনশীল পরিচয় করিয়ে দিতে এবং তারপর এটি নির্ণয় করা হয়: a="ls -la|grep ^d";eval $a;eval $a -vls/ এ আরও অনেক অপশন নির্দিষ্ট করা থাকলে পুনরাবৃত্তি এড়ানোর জন্য দরকারী হতে পারে grep। সেই ls -la --group-directories-firstবিকল্পটিও রয়েছে, তবে স্বল্পতম ইমো হ'লls -la|sort
স্টিভেন প্রবিলিনস্কি

204

আমি তাই ভালবাসা * নিক্স এবং উদ্ভাবন যে এই উত্তরগুলির মধ্যে কিছু গিয়ে দেখে প্রেম ...

জিএনইউ লিনাক্স সম্পর্কে আমার প্রায় অভিনব নয়:

alias ls='ls --color -h --group-directories-first'

আমার লিনাক্স সিএলআই অ্যাপ্লিকেশনগুলির সাথে আমি আরও স্বাচ্ছন্দ্য বোধ করা হচ্ছে, আমি ওএসএক্সে কোর্টিলগুলি আপডেট করার প্রবণতাও রেখেছি:

brew install coreutils
alias ls='/usr/local/bin/gls --color -h --group-directories-first'

6
দুর্ভাগ্যক্রমে, এটি অসক্স টার্মিনালে কাজ করে না, যেহেতু - বিকল্পটি উপলভ্য নয়।
এমইএম

7
রে প্রেম: এটা কি কটাক্ষ? যদি তা হয় তবে আমি রাজি হই।
অ্যালিউরকোড

4
উপন্যাস ls এর উদ্দেশ্য হ'ল আমি 90% সময় ব্যবহার করতে চাই এমন কনফিগারেশন উপাদানগুলি সংজ্ঞায়িত করা। পছন্দসই আউটপুট অর্জন করতে কম কীস্ট্রোক। আপনি যদি কখনও এর পরে নেটিভ এলএস আউটপুট পেতে চান তবে আপনি সর্বদা / বিন / এলএস করতে পারেন।
জোনাথনসরাফিনী

4
@ মেম আপনি যদি ওএস এক্স ব্যবহার করেন এবং আপনি যদি টার্মিনাল ব্যবহার করে উপভোগ করেন তবে আপনার উচিত brew install bash , এটি কাজ করবে! :)
অ্যান্ড্রু অ্যাশব্যাকার

5
আমার মতামত: এটি গ্রহণযোগ্য উত্তর হওয়া উচিত ছিল কারণ এতে
গ্রাইপ

17

Mac এর জন্য ব্যবহারকারীদের coreutils :

brew install coreutils

alias ls='ls --color -h --group-directories-first'

ধরে নিই আপনার সিস্টেম হোমব্রু করার জন্য প্রস্তুত :


7
glsবরং। রাইট?
পল আইরিশ

1
হ্যাঁ, ডিফল্টরূপে। এর সাথে আপনি ডিফল্টরূপে কোর্টিলগুলিও ব্যবহার করতে পারেন PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
বেনশ

7

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

  1. ডিরেক্টরি এবং ফাইল বর্ণানুক্রমিকভাবে বাছাই করা হয়
  2. ডিরেক্টরিগুলি প্রথমে তালিকাভুক্ত করা হয়
  3. সিম্বলিক লিঙ্কগুলি (সিমলিঙ্কগুলি) ফাইলের মতো বাছাই করা হয়
  4. বাছাই করা কেস-সংবেদনশীল
  5. বাছাই করা একটি ফাইলের মধ্যে সমস্ত নেতৃস্থানীয় নন-আলফা অক্ষর উপেক্ষা করে
  6. তালিকার মধ্যে ডিরেক্টরিগুলির মোট গণনা ( ফাইল বাদে ./এবং ../) অন্তর্ভুক্ত থাকে files
  7. তালিকাভুক্তিতে ডিরেক্টরি এবং ফাইলগুলির মোট আকার (ডিস্ক ব্যবহার) অন্তর্ভুক্ত
  8. তালিকাটি লিনাক্স এবং উইন্ডোজ (গিট ব্যাশ শেল) এ একইরকম দেখতে হবে - --group-directories-firstউইন্ডোজের জন্য গিট ব্যাশে কাজ না করার মতো সুবিধাজনক বিকল্পগুলি সঠিক হওয়া থেকে এটি পাওয়া সবচেয়ে কঠিন was

অনেক হ্যাকিংয়ের পরে, আমি অবশেষে একটি ওয়ান-লাইনার নিয়ে এসেছি (খুব দীর্ঘ লাইন হলেও ;-)) যা আমি সন্তুষ্ট। আমি এটি 'দির' নামের একটি উপন্যাসকে অর্পণ করেছি:

ls -dlF --color * .* | head -n2 && ls -AlF | LC_ALL=C grep "^d" | 
LC_ALL=C sort -k 9df && ls -AlF | LC_ALL=C grep "^[l-]" | 
LC_ALL=C sort -k 9df && echo -e `find -maxdepth 1 -type d ! -name . | 
wc -l` Dir\(s\) `du -hs | cut -f 1`\\t\\t`find -maxdepth 1 -type f | 
wc -l` File\(s\) `find -maxdepth 1 -type f -print0 | du -ch --files0-from=- | 
tail -n 1 | cut -f 1`\\t\\t`find -maxdepth 1 -type l | wc -l` Link\(s\)

জিনিসগুলি পরিচালনা করা সহজ করার জন্য, আমি ডিরেক্টরি অনুসারে ডিরেক্টরিগুলির প্রতিটি বিভাগকে আউটপুট করতে পৃথক কমান্ড নিয়ে এসেছি, তারপরে &&অপারেটরটি ব্যবহার করে সেগুলি একত্রিত করেছি ।

  • ls -dlF --color * .* | head -n2- এক্সট্রাক্ট ./এবং ../। আমরা এগুলি দিয়ে যেতে চাই না sortকারণ তারা ইতিমধ্যে সঠিক ক্রমে রয়েছে এবং তাদের বাছাইয়ের ফলে ../প্রথমে তালিকাবদ্ধ হতে পারে । -dবিকল্প "মোট" লাইনের পরিত্রাণ পেতে হয়; আমি -Fডিরেক্টরিগুলির জন্য অনুসরণযোগ্য স্ল্যাশ দেখানোর জন্য যুক্ত করতে চাই (এটি আপনি যখন কোনও সমতল করবেন তখন এটি "@" দিয়ে সিমলিংকগুলি চিহ্নিত করবে ls -F)।

  • ls -AlF | LC_ALL=C grep "^d" | LC_ALL=C sort -k 9df- ডিরেক্টরিগুলি বের করুন এবং ফাইল-নাম (9 ম কলাম) অনুসারে বাছাই করুন, অ-আলফা / স্পেস অক্ষর ( dবিকল্প) এবং চরিত্রের কেস ( fবিকল্প) উভয় উপেক্ষা করে । ls -Aবিকল্প বাদ ./এবং ../তালিকা থেকে যেহেতু আমরা ইতিমধ্যেই তাদের পূর্ববর্তী ধাপে বের। আমি সমস্ত উপসর্গের প্রবণতা grepএবং লোকেল রিসেটের sortসাথে আদেশের প্রবণতা রাখি LC_ALL=Cযাতে (1) আউটপুটটি ইউনিক্স শেলগুলি জুড়ে সামঞ্জস্যপূর্ণ হয় এবং (2) আপনি কখনও কখনও দ্রুত পারফরম্যান্স দেখতে পান যেহেতু এটির ভারী ইউটিএফ -8 অক্ষরের ওভারহেড সেট করা থাকে না সাথে ডিল

  • ls -AlF | LC_ALL=C grep "^[l-]" | LC_ALL=C sort -k 9df - এটি উপরের ধাপের অনুরূপ, তবে এবার আমরা ফাইল এবং সিমলিংকগুলি বাছাই করছি।

  • find -maxdepth 1 -type d ! -name . | wc -l- ডিরেক্টরি বাদ দিয়ে ./এবং বাদ দিন ../

  • find -maxdepth 1 -type f | wc -l - ফাইল সংখ্যা পান।

  • find -maxdepth 1 -type l | wc -l - সিমলিংকের সংখ্যা পান।

  • du -hs | cut -f 1 - মানব-পঠনযোগ্য ফর্ম্যাটে সমস্ত উপ-ডিরেক্টরিগুলির মোট আকারটি বের করুন।

  • find -maxdepth 1 -type f -print0 | du -ch --files0-from=- | tail -n 1 | cut -f 1 - মানব-পঠনযোগ্য ফর্ম্যাটে সমস্ত ফাইলের মোট আকার বের করুন।

দেখা যাক আমাদের নতুন dirউপন্যাসটি ক্রিয়াকলাপে!

আগে:

$ ls -alF
total 22
drwxr-xr-x   13 Tom      Administ     4096 Oct 25 02:38 ./
drwxr-xr-x    3 Tom      Administ        0 Dec 24  2014 ../
drwxr-xr-x   15 Tom      Administ     4096 Sep 17 01:23 .VirtualBox/
-rw-r--r--    1 Tom      Administ      615 Oct 25 02:38 .aliases
-rw-r--r--    1 Tom      Administ    12742 Oct 24 11:47 .bash_history
-rw-r--r--    1 Tom      Administ     3234 Oct 24 15:06 .bash_profile
drwxr-xr-x    1 Tom      Administ        0 Jan 24  2015 .gem/
-rw-r--r--    1 Tom      Administ      586 Oct 24 03:53 .gitconfig
drwxr-xr-x    1 Tom      Administ     4096 Dec 28  2014 .ssh/
drwxr-xr-x    4 Tom      Administ        0 Jan 24  2015 .travis/
-rw-r--r--    1 Tom      Administ     6645 Oct 25 02:38 _viminfo
-rw-r--r--    1 Tom      Administ     4907 Oct 24 15:16 profile
drwxr-xr-x    1 Tom      Administ        0 Oct 24 22:20 tmp/

পরে:

$ dir
drwxr-xr-x   13 Tom      Administ     4096 Oct 25 02:38 ./
drwxr-xr-x    3 Tom      Administ        0 Dec 24  2014 ../
drwxr-xr-x    1 Tom      Administ        0 Jan 24  2015 .gem/
drwxr-xr-x    1 Tom      Administ     4096 Dec 28  2014 .ssh/
drwxr-xr-x    1 Tom      Administ        0 Oct 24 22:20 tmp/
drwxr-xr-x    4 Tom      Administ        0 Jan 24  2015 .travis/
drwxr-xr-x   15 Tom      Administ     4096 Sep 17 01:23 .VirtualBox/
-rw-r--r--    1 Tom      Administ      615 Oct 25 02:38 .aliases
-rw-r--r--    1 Tom      Administ    12742 Oct 24 11:47 .bash_history
-rw-r--r--    1 Tom      Administ     3234 Oct 24 15:06 .bash_profile
-rw-r--r--    1 Tom      Administ      586 Oct 24 03:53 .gitconfig
-rw-r--r--    1 Tom      Administ     4907 Oct 24 15:16 profile
-rw-r--r--    1 Tom      Administ     6645 Oct 25 02:38 _viminfo
      5 Dir(s) 2.8M           6 File(s) 31K           0 Link(s)

একটি ছোট ছোট ক্ষতি হ'ল আপনার রঙিন তালিকা থাকতে পারে না, যেহেতু ফাইলের নামগুলির চারপাশে রঙ নিয়ন্ত্রণের অক্ষরগুলি বাছাই খুব অবিশ্বাস্য করে তোলে।


হালনাগাদ

গভীর ফাইল সিস্টেমের মূল ডিরেক্টরি থেকে চালিত হওয়ার পরে উপরের উপনামটি বেদনাদায়কভাবে ধীর ছিল, তাই আমি এই সহজ তবে আরও অনেক বেশি পারফরম্যান্ট কমান্ডটিতে আপডেট করেছি:

ls -AFoqv --color --group-directories-first | tail -n +2 && find -maxdepth 1 -type f -printf '%s\n' | awk '{total+=$1} END {print total" bytes"}'

নমুনা আউটপুট:

$ dir
drwxr-xr-x 1 Tom     0 Mar 29 13:49 .aws/
drwxr-xr-x 1 Tom     0 Mar 29 13:49 .gem/
drwxr-xr-x 1 Tom     0 Mar 29 19:32 .ssh/
drwxr-xr-x 1 Tom     0 Mar 29 13:49 .zbstudio/
drwxr-xr-x 1 Tom     0 Jun 16  2016 temp/
drwxr-xr-x 1 Tom     0 Jul 13  2016 vimfiles/
-rw-r--r-- 2 Tom   365 Mar 30 10:37 .aliases
-rw-r--r-- 1 Tom 16028 Mar 30 12:12 .bash_history
-rw-r--r-- 2 Tom  2807 Mar 30 12:12 .bash_profile
-rw-r--r-- 2 Tom  2177 Mar 29 23:24 .functions
-rw-r--r-- 1 Tom  1091 Mar 30 10:34 .gitconfig
-rw-r--r-- 1 Tom  8907 Mar 29 14:45 _viminfo
-rw-r--r-- 1 Tom  2444 Jul 13  2016 _vimrc
33819 bytes

উইন্ডোজের জন্য গিট ব্যাশের নতুন সংস্করণটি যেহেতু সমর্থন করে --group-directories-first, আমাদের আর পিছিয়ে পড়তে হবে না sort। যদিও নতুন উপনামটি পূর্বের ওরফে হিসাবে তত বেশি তথ্য প্রদর্শন না করে, পারফরম্যান্সের লাভগুলি এর চেয়ে বেশি মূল্যবান। পার্ক হিসাবে, আপনিও রঙ পান!


দুর্দান্ত উত্তর! তবে আপনি যখন বলেন, "অনেক হ্যাক করার পরে, অবশেষে আমি একটি ওয়ান-লাইনার নিয়ে এসেছি ..." হ্যাঁ, প্রকৃতপক্ষে এটি ক্লাসিক অর্থে সত্যই "ওয়ান লাইনার" নয়। এই যুক্তিটি গ্রহণ করা এবং এটি একটি স্ট্যান্ডেলোন শেল স্ক্রিপ্ট তৈরি করা এবং এটি চালানো বা একটি উপনাম হিসাবে কল করা বোধগম্য হতে পারে।
জ্যাকগল্ড

@ জ্যাকগোল্ড আপনি দ্রুত! আমি এখনও আমার উত্তরটি প্রুফ-পড়া শেষ করি নি এবং আপনি ইতিমধ্যে এটি পড়া শেষ করেছেন এবং একটি মন্তব্য বন্ধ করেছেন :)। হ্যাঁ, এটি কোনও ফাংশনের প্রধান প্রার্থী, তবে আমি তখন খুব অলস ছিলাম, তাই এটি কেবল আমার .bash_aliases ফাইলের মধ্যে ফেলে দিয়েছি। অন্যদিকে, আমি সাধারণত তখন একটি ফাংশন লিখি যখন আমি প্যারামিটারগুলি পাস না করে কিছু করতে পারি না।
thordan

@ 10basetom: তাত্ক্ষণিক প্রশ্ন: আপনি কলামে কলামগুলির জন্য বিভিন্ন রঙ কীভাবে পাবেন? আমি ls --color ব্যবহার করে ফাইলের নাম দিয়ে ফাইলের নাম রঙ করতে পারি, কিন্তু কলামগুলির জন্য সেই সহায়ক রঙগুলি পাওয়ার কোনও উপায় আমি দেখতে পাচ্ছি না। কি রহস্য?
পিরেক্স

@ পিরিক্স আমি বিশ্বাস করি যে কলামগুলি ডিফল্ট স্ট্যাক এক্সচেঞ্জের সিনট্যাক্স হাইলাইট করে রঙ করা হয়েছে :-)।
thldan

হ্যাঁ, এটি মনে হচ্ছে, তবে এটি একটি দুর্দান্ত ধারণা এবং সমাধানগুলি ;-) এ রয়েছে
প্যারেক্স

6

আপনি বর্ণানুক্রমিক ক্রম রাখতে চান তা নির্ভর করে আপনি বেশ কয়েকটি পছন্দ পেয়েছেন।

আপনি কেবল চেষ্টা করতে পারেন:

ls -al | সাজান-কে 1-আর

বা এটি, একই অনুমতিযুক্ত ফাইলগুলির জন্য বর্ণমালা ক্রম রাখতে:

ls -al | বাছাই -k1,1 -k9,9 -r

বা, এগারো জন যেমন বলেছেন (তবে এই সংস্করণটি সমস্ত কিছু তালিকাভুক্ত করে):

ls -la | গ্রেপ "^ d" && ls -la | গ্রেপ "^ -" && ls -al | গ্রেপ-ভি "^ [ডি | -]"


1
এটি একটি সুন্দর সমাধান আইএমও। বাছাইয়ের জন্য পাইপিংয়ের পরিবর্তে বাছাই করার জন্য বেশ কয়েকটি প্রক্রিয়া এবং পাইপ ব্যবহার করা এক ধরণের পিছনের দিক থেকে মনে হয়। বিশেষত যেহেতু ls- al|sort -k1 -rকাজ করে। যা ছিল তা খালি -rপতাকা।
brice

@ ব্রাইস যে জিনিসটি আমাকে 'সাজান' সম্পর্কে বিরক্ত করে তা হ'ল এটি ./এবং ../সেই ক্রমে প্রথম দুটি লাইন হবে না। তা ছাড়া, আমি সম্মত যে এটি আরও কার্যকর সমাধান।
thdoan

আউটপুট রঙ কিভাবে?
দানিজেল

5

করতে delerious010 এর উত্তর, আমি আপনাকে পুরোনো শৈলী ক্রম চান তাহলে যে যোগ হবে:

LANG=C ls -la --group-directories-first

(বা এলসি_এলএল বা ভাষা বা এলসি_সিএলএলটি "সি" তে সেট করুন) ব্যবহার করুন।

এটি এর অনুরূপ কিছু দেবে:

.
..
DIR
Dir
dir
.hidden
123
UC_FILE
Uc_file
lc_file

যদিও, আমি যদি সঠিকভাবে স্মরণ করি তবে লুকানো ডট ফাইলগুলি মূলত ডিরেক্টরিগুলির সামনে উপস্থিত হয়েছিল।


2

এটি করার জন্য এখানে একটি ফাংশন রয়েছে (বাশ বা জেডএস): এবং ... আমি এটি সর্বোত্তম উপায় বলে প্রস্তাব দিচ্ছি না, তবে আমি এখনই আসছি এবং এখনই ব্যবহার করছি:

ফাংশন এলএসএস
{
    # শীর্ষ ডিরেক্টরিতে ডিরেক্টরি তালিকা প্রদর্শন করে।

    ls --color = সর্বদা $ @ | কমান্ড egrep '^ d | মোট'
    ls --color = সর্বদা $ @ | কমান্ড egrep -v '; d | মোট';
}

শুধু একটি fyi এটি কাজ করে না। ls -lফাইল টাইপের মতো ফিল্টার করার জন্য আপনাকে দীর্ঘ তালিকা বিন্যাস ( ) ব্যবহার করতে হবে । এছাড়াও, এই কমান্ডটি ফাঁক করে ফাঁক হয়ে যাবে (ব্যাশে)। আপনাকে এর মতো উদ্ধৃতি দিতে হবে: "$@"আপনি যদি এই পদ্ধতির ব্যবহার করতে চান তবে আপনি এরকম কিছু করতে পারেন:function lss {local temp="$(command ls -l --color=always "$@")"; egrep --color=never '^d|total' <<<"$temp"; egrep --color=never -v '^d|total' <<<"$temp"}
ছয়

2

ls -laX প্রথমে বর্ণমালা অনুসারে ডিরেক্টরিগুলি আপনাকে প্রদর্শন করবে তবে ফাইল তালিকাটি স্ক্রু করবে।

দীর্ঘ বিকল্প:

ls
    -l    # List
    --all
    -X    # Sort alphabetically by entry extension

এটি কেবলমাত্র তখনই কাজ করবে যদি আপনি একেবারে নিশ্চিত হতে পারতেন যে প্রতিটি ডিরেক্টরিতে তার নামে কোনও বিন্দু নেই।
এগারোটি

1

অন্য উপায় ...

find . -d 1 -type d | ls -la | sort -r 

অথবা

ls -la | sort -r

অথবা

d=`find . -type d -d 1`;f=`find . -type f -d 1`; echo -e -DIRS- "\n$d\n" -FILES- "\n$f"

এগুলি কী করে? আপনি এগুলি টাইপ করতে শিখলেন কোথায়?
তমারা উইজসম্যান

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

প্রথমটি কিছুটা রিডানড্যান্ট ... ডিরেক্টরিগুলির জন্য বাছাই করার কোনও কারণ নেই কারণ আমাদের নির্দেশিকাগুলি নয় পরিবর্তনের প্রয়োজন ... 'ls -la | বাছাই -আর 'আসলে কাজ করে। মূলত এটি বলা হচ্ছে ... 1) ক) সন্ধান করুন। -d 1 -type d (এই ডিরেক্টরি থেকে শুরু করুন, কেবল একটি ডিরেক্টরি গভীরতার সন্ধান করুন এবং কেবল ডিরেক্টরি অনুসন্ধান করুন) খ) ls -la (সমস্ত বৈশিষ্ট্যের তালিকা ফাইলগুলি) গ) তাদের বিপরীতে বাছাই করুন 2) কেবল অনুসন্ধানটি বাদ দিন। .. এটির দরকার নেই ... আমি আসলে স্টাডিজদের সমাধান আরও ভাল পছন্দ করি ... :-)
এডি বি

1

টি এল; ডিআর

alias ls='ls -lhF --color'

list_sorted() {
    ls $* | grep "^d";
    ls $* | grep "^-";
    ls $* | grep -v -E "^d|^-|^total"
}

alias ll=list_sorted

ব্যাখ্যা

আমি এখানে উত্তর এবং মন্তব্যে প্রদত্ত সমাধানগুলির সংমিশ্রণটি ব্যবহার করি।

ডিফল্ট ls

প্রথমত, আমি এর জন্য ডিফল্ট আচরণটি ওভাররাইট করি ls:

  • -l: সর্বদা তালিকাটিকে এক-মাত্রিক, উল্লম্ব তালিকা হিসাবে প্রদর্শন করুন
  • -h: মানব-পঠনযোগ্য ফ্যাশনে ফাইল মাপ প্রদর্শন করুন (উদাহরণস্বরূপ, 4096 এর পরিবর্তে 4.0K)
  • -F: ডিরেক্টরিগুলির জন্য পিছনের স্ল্যাশের মতো সূচকগুলি প্রদর্শন করুন
alias ls='ls -lhF --color'

সম্প্রসারিত ll

এর পরে, আমি বাছাইয়ের যুক্তিযুক্ত একটি ফাংশন লিখি। প্রত্যেকের জন্য lsআমি এটিতে যে কোনও আর্গুমেন্ট পাস করি। এটি আমাকে তালিকাবদ্ধ করতে ইচ্ছুক (যেমন ls -a ~) এর চেয়ে আলাদা একটি ওয়ার্কিং ডিরেক্টরি থেকে ওরফে ব্যবহার করতে সক্ষম করে ।

এছাড়াও, প্রতিটি কল lsএকটি grepকমান্ডে পাইপ করা হয় । এখানে, বাছাই হয়। ls -l | grep "^d"উদাহরণস্বরূপ কেবল ডিরেক্টরিগুলি তালিকাবদ্ধ করে। ডিরেক্টরিগুলি যদি প্রথমে তালিকাবদ্ধ করা উচিত হয় তবে ফাংশনেও এটি প্রথম হওয়া দরকার। পরবর্তী জিনিস ফাইল।

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

list_sorted() {
    # List directories
    ls $* | grep "^d";
    # List regular files
    ls $* | grep "^-";
    # List everything else (e.g. symbolic links)
    ls $* | grep -v -E "^d|^-|^total"
}

অবশেষে, আমি একটি নতুন কমান্ডে ফাংশনটি ওরফে রাখি। lsকিছু পরিস্থিতিতে আমার ফাংশনটি ভাঙ্গার ক্ষেত্রে আমি ওভাররাইট করতে চাই না । তারপরে আমি ব্যবহার করতে সক্ষম হতে চাই ls। বিকল্পভাবে, আপনি সর্বদা বিনা অনুরোধে অন-এলয়েজড lsকমান্ডটি আবেদন করতে পারেন \ls

alias ll=list_sorted

নোট

  • আমি আদেশগুলির ;পরিবর্তে &&ডিলিমিটার হিসাবে ব্যবহার করি । তা না হলে, এক ডিরেক্টরি ধারণকারী না ডিরেক্টরি বিষয়বস্তু তালিকা করতে অক্ষম (প্রথম ls কমান্ড, মিথ্যা মূল্যায়ণ এইভাবে পরবর্তী কমান্ড সঞ্চালনের অনুমতি না যেহেতু এটি সঙ্গে মিলিত হচ্ছে &&;যে এড়াতে।)

0

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

rm -f /tmp/lsout
ls -1p | grep / | sort -f >> /tmp/lsout
ls -1p | grep -v / | sort -f >> /tmp/lsout

IFS=$'\n' read -d '' -r -a lines < /tmp/lsout

printf "%-24s  %-24s  %-24s\n" "${lines[@]}"

এবং অন্য, কিছু অতিরিক্ত বিন্যাস সহ।

rm -f /tmp/lsout
echo "  ---- Directories ---- " >> /tmp/lsout
ls -1p | grep / | sort -f >> /tmp/lsout
IFS=$'\n' read -d '' -r -a lines < /tmp/lsout
printf "%-24s  %-24s  %-24s\n" "${lines[@]}"

rm -f /tmp/lsout
echo "  ------- Files ------- " >> /tmp/lsout
ls -1p | grep -v / | sort -f >> /tmp/lsout
IFS=$'\n' read -d '' -r -a lines < /tmp/lsout
printf "%-24s  %-24s  %-24s\n" "${lines[@]}"

শেষেরটির জন্য আউটপুট নীচের মত দেখাচ্ছে, রঙগুলি বিয়োগ করে:

  ---- Directories ----   archive/                  bookmarks/              
Desktop/                  Documents/                Downloads/              
fff/                      health/                   Library/                
Movies/                   Music/                    Pictures/               
Public/                   rrf/                      scifi/            
testdir/                  testdir2/                                         
  ------- Files -------   @todo                     comedy            
delme                     lll                       maxims                  
schedule                  vtokens style

এই স্ক্রিপ্টটি যেহেতু এটির নাম দেয় তেমনি আপনি ওরফে বা ডিফল্ট আচরণ পরিবর্তন করবেন না।

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