আমি ls
কমান্ডটি প্রথমে ডিরেক্টরি এবং তারপরে ফাইলগুলি প্রদর্শন করতে চাই । আমি চেষ্টা করেছিলাম:
ls -la | sort -k 1
তবে আমি একটি ভুল আদেশ পেয়েছি।
ls -lh --group-directories-first
আমি ls
কমান্ডটি প্রথমে ডিরেক্টরি এবং তারপরে ফাইলগুলি প্রদর্শন করতে চাই । আমি চেষ্টা করেছিলাম:
ls -la | sort -k 1
তবে আমি একটি ভুল আদেশ পেয়েছি।
ls -lh --group-directories-first
উত্তর:
নীচের কমান্ডটি ডিরেক্টরিগুলি প্রথম, সাধারণ ফাইলগুলি দ্বিতীয় এবং তৃতীয় লিঙ্কগুলি তালিকাভুক্ত করবে।
ls -la | grep "^d" && ls -la | grep "^-" && ls -la | grep "^l"
এছাড়াও, কী-স্ট্রোকগুলি সংরক্ষণ করার জন্য এই কমান্ডটির জন্য একটি উপনাম তৈরি করা একটি দুর্দান্ত ধারণা তৈরি করবে ।
সম্পাদনা:
আপনি যদি প্রথমে ডিরেক্টরিগুলি চান এবং তারপরে ডিরেক্টরিটি দ্বিতীয় নয় এমন সবকিছু ব্যবহার করুন:
ls -la | grep "^d" && ls -la | grep -v "^d"
ls -la | grep "^d" && ls -la | grep "^-" && ls -la | grep -v -E "^d|^-|^total"
?
alias la="ls -la | grep \"^d\" && ls -la | grep \"^-\" && ls -la | grep -E \"^d|^-\" -v | grep -v \"^total\""
ls -la|grep ^d;ls -la|grep -v ^d
(উদ্ধৃতিগুলির প্রয়োজন হয় না এবং এর সাথে প্রতিস্থাপন করা &&
হয় ;
)। আরেকটি বিকল্প একটি পরিবর্তনশীল পরিচয় করিয়ে দিতে এবং তারপর এটি নির্ণয় করা হয়: a="ls -la|grep ^d";eval $a;eval $a -v
। ls
/ এ আরও অনেক অপশন নির্দিষ্ট করা থাকলে পুনরাবৃত্তি এড়ানোর জন্য দরকারী হতে পারে grep
। সেই ls -la --group-directories-first
বিকল্পটিও রয়েছে, তবে স্বল্পতম ইমো হ'লls -la|sort
আমি তাই ভালবাসা * নিক্স এবং উদ্ভাবন যে এই উত্তরগুলির মধ্যে কিছু গিয়ে দেখে প্রেম ...
জিএনইউ লিনাক্স সম্পর্কে আমার প্রায় অভিনব নয়:
alias ls='ls --color -h --group-directories-first'
আমার লিনাক্স সিএলআই অ্যাপ্লিকেশনগুলির সাথে আমি আরও স্বাচ্ছন্দ্য বোধ করা হচ্ছে, আমি ওএসএক্সে কোর্টিলগুলি আপডেট করার প্রবণতাও রেখেছি:
brew install coreutils
alias ls='/usr/local/bin/gls --color -h --group-directories-first'
brew install bash
, এটি কাজ করবে! :)
Mac এর জন্য ব্যবহারকারীদের coreutils :
brew install coreutils
alias ls='ls --color -h --group-directories-first'
ধরে নিই আপনার সিস্টেম হোমব্রু করার জন্য প্রস্তুত :
gls
বরং। রাইট?
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
।
ডিরেক্টরি তালিকাতে আমি দেখতে চাই এমন কিছু বিষয় রয়েছে এবং এখন পর্যন্ত এখানে উত্তরগুলির কোনওটিই নীচের সমস্ত প্রয়োজনীয়তার সাথে মেলে না। ডিরেক্টরি তালিকার জন্য আমার প্রয়োজনীয়তা:
./
এবং ../
) অন্তর্ভুক্ত থাকে files--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
। যদিও নতুন উপনামটি পূর্বের ওরফে হিসাবে তত বেশি তথ্য প্রদর্শন না করে, পারফরম্যান্সের লাভগুলি এর চেয়ে বেশি মূল্যবান। পার্ক হিসাবে, আপনিও রঙ পান!
আপনি বর্ণানুক্রমিক ক্রম রাখতে চান তা নির্ভর করে আপনি বেশ কয়েকটি পছন্দ পেয়েছেন।
আপনি কেবল চেষ্টা করতে পারেন:
ls -al | সাজান-কে 1-আর
বা এটি, একই অনুমতিযুক্ত ফাইলগুলির জন্য বর্ণমালা ক্রম রাখতে:
ls -al | বাছাই -k1,1 -k9,9 -r
বা, এগারো জন যেমন বলেছেন (তবে এই সংস্করণটি সমস্ত কিছু তালিকাভুক্ত করে):
ls -la | গ্রেপ "^ d" && ls -la | গ্রেপ "^ -" && ls -al | গ্রেপ-ভি "^ [ডি | -]"
ls- al|sort -k1 -r
কাজ করে। যা ছিল তা খালি -r
পতাকা।
./
এবং ../
সেই ক্রমে প্রথম দুটি লাইন হবে না। তা ছাড়া, আমি সম্মত যে এটি আরও কার্যকর সমাধান।
করতে delerious010 এর উত্তর, আমি আপনাকে পুরোনো শৈলী ক্রম চান তাহলে যে যোগ হবে:
LANG=C ls -la --group-directories-first
(বা এলসি_এলএল বা ভাষা বা এলসি_সিএলএলটি "সি" তে সেট করুন) ব্যবহার করুন।
এটি এর অনুরূপ কিছু দেবে:
.
..
DIR
Dir
dir
.hidden
123
UC_FILE
Uc_file
lc_file
যদিও, আমি যদি সঠিকভাবে স্মরণ করি তবে লুকানো ডট ফাইলগুলি মূলত ডিরেক্টরিগুলির সামনে উপস্থিত হয়েছিল।
এটি করার জন্য এখানে একটি ফাংশন রয়েছে (বাশ বা জেডএস): এবং ... আমি এটি সর্বোত্তম উপায় বলে প্রস্তাব দিচ্ছি না, তবে আমি এখনই আসছি এবং এখনই ব্যবহার করছি:
ফাংশন এলএসএস { # শীর্ষ ডিরেক্টরিতে ডিরেক্টরি তালিকা প্রদর্শন করে। ls --color = সর্বদা $ @ | কমান্ড egrep '^ d | মোট' ls --color = সর্বদা $ @ | কমান্ড egrep -v '; d | মোট'; }
ls -l
ফাইল টাইপের মতো ফিল্টার করার জন্য আপনাকে দীর্ঘ তালিকা বিন্যাস ( ) ব্যবহার করতে হবে । এছাড়াও, এই কমান্ডটি ফাঁক করে ফাঁক হয়ে যাবে (ব্যাশে)। আপনাকে এর মতো উদ্ধৃতি দিতে হবে: "$@"
আপনি যদি এই পদ্ধতির ব্যবহার করতে চান তবে আপনি এরকম কিছু করতে পারেন:function lss {local temp="$(command ls -l --color=always "$@")"; egrep --color=never '^d|total' <<<"$temp"; egrep --color=never -v '^d|total' <<<"$temp"}
ls -laX
প্রথমে বর্ণমালা অনুসারে ডিরেক্টরিগুলি আপনাকে প্রদর্শন করবে তবে ফাইল তালিকাটি স্ক্রু করবে।
দীর্ঘ বিকল্প:
ls
-l # List
--all
-X # Sort alphabetically by entry extension
অন্য উপায় ...
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"
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 কমান্ড, মিথ্যা মূল্যায়ণ এইভাবে পরবর্তী কমান্ড সঞ্চালনের অনুমতি না যেহেতু এটি সঙ্গে মিলিত হচ্ছে &&
। ;
যে এড়াতে।)এটি একটি স্ক্রিপ্ট সমাধান। কেবল নাম তালিকাভুক্ত করে, কোনও ইনোড ডেটা নেই, বর্ণানুক্রমিক নয়, সংবেদনশীল নয়, কলামগুলিতে ফর্ম্যাট হয়েছে। যদিও এটি 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
এই স্ক্রিপ্টটি যেহেতু এটির নাম দেয় তেমনি আপনি ওরফে বা ডিফল্ট আচরণ পরিবর্তন করবেন না।
-
আগে আসেd
sort