क्या आप नाम से एक ls लिस्टिंग सॉर्ट कर सकते हैं ?
क्या आप नाम से एक ls लिस्टिंग सॉर्ट कर सकते हैं ?
जवाबों:
मेरा एलएस डिफ़ॉल्ट रूप से नाम से सॉर्ट करता है। आप क्या देख रहे हो?
man ls
कहता है:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:
ls
यदि यह -c1
निर्दिष्ट नहीं करता है : क्या ऐसा करने का कोई तरीका है? ( --sort=name
काम नहीं लगता)
ls -la
, मैं देखता हूं: .bashrc - can - .config - Downloads - .local - tmp
सॉर्ट नाम होगा:.bashrc - .config - .local - Downloads - can - tmp
कुछ सरल के लिए, आप एलएस को सॉर्ट के साथ जोड़ सकते हैं । फ़ाइल नामों की सूची के लिए:
ls -1 | तरह
उन्हें उल्टे क्रम में क्रमबद्ध करने के लिए:
ls -1 | सॉर्ट -r
ls | sort -n
1.1.1; 1.1.2; 1.1.3; 2.10.1; 2.10.15; 2.10.2; 2.10.20; 2.10.21; 2.1.1; 2.1.10; 2.1.15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11.0.21; 11.0.22; जैसा कि आप 2.10.2 से पहले 2.10.15 देख सकते हैं ।
ls -1r
।
ls
डिफ़ॉल्ट रूप से coreutils
एक स्थानीय-जागरूक प्रकार करता है , और इस प्रकार कुछ मामलों में आश्चर्यजनक परिणाम उत्पन्न कर सकता है (उदाहरण के लिए, %foo
बीच bar
और quux
में सॉर्ट करेगा LANG=en_US
)। यदि आप एक ASCIIbetical सॉर्ट चाहते हैं, तो उपयोग करें
LANG=C ls
LANG
ilfnuence की तरह व्यवहार, यह पोस्ट मेरी बहुत मदद करती है!
?
हर गैर-अस्की चरित्र के लिए आउटपुट जब आउटपुट एक टर्मिनल होता है (ls से खराब सुविधा यह जांचती है कि क्या यह टर्मिनल के लिए आउटपुट है, पाइपिंग करते समय काम करता है)। आप बिल्ली को पाइपिंग के साथ इसे "ठीक" कर सकते हैं, C.UTF-8
लोकेल का उपयोग कर सकते हैं (यदि आपका सिस्टम इसका समर्थन करता है) और / या -b
ध्वज का उपयोग करें । इससे भी बेहतर, बिल्कुल उपयोग न करें ls
, बेहतर उपयोग करें
ls
एन डैश से पहले हाइफ़न को सॉर्ट करें।
* निक्स उपकरणों की सुंदरता आप उन्हें जोड़ सकते हैं:
ls -l | sort -k9,9
का आउटपुट ls -l
इस तरह दिखेगा
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
तो 9,9
आप स्तंभ के साथ स्तंभ 9
को सॉर्ट करें 9
, फ़ाइल नाम होने के नाते। आपको यह प्रदान करना होगा कि कहां रुकना है, जो इस मामले में एक ही कॉलम है। कॉलम शुरू होते हैं 1
।
इसके अलावा, यदि आप ऊपरी / निचले मामले को अनदेखा करना चाहते हैं, तो --ignore-case
सॉर्ट कमांड में जोड़ें ।
-k9,9
मतलब है?
9
है एक ही कॉलम तक कॉलम को सॉर्ट करना 9
। एक सामान्य ls
आउटपुट इस तरह दिखता है: drwx------ 8 999 user 4.0K Feb 5 2017 file.txt
इसलिए 9 कॉलम फ़ाइल नाम हैं। यदि आप मामले को अनदेखा करना चाहते हैं, तो --ignore-case
सॉर्ट करें।
सूचना: "ए" के बाद "जेड" आता है:
$ स्पर्श A.txt aa.txt Z.txt
$ एल.एस.
A.txt Z.txt aa.txt
normal
यहाँ समाधान की कोशिश करेंगे ।
केवल एक संख्यात्मक स्ट्रिंग द्वारा भिन्न होने वाली फाइलें इस संख्या पर इस शर्त पर छांटी जा सकती हैं कि यह एक विभाजक द्वारा पूर्ववर्ती है।
इस स्थिति में, निम्न सिंटैक्स का उपयोग किया जा सकता है:
ls -x1 file | sort -t'<char>' -n -k2
उदाहरण:
ls -1 TRA*log | sort -t'_' -n -k2
TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
मैन पेज से (bash ls के लिए):
अगर कोई -cftuSUX और न ही -sort में से कोई भी हो, तो वर्णानुक्रम में प्रविष्टियों को क्रमबद्ध करें।
which ls
अगर बैश में बिलियन एलएस होता तो भी यह सफल होता। बल्कि, builtin ls
मार-काट करते हैं, और एक त्रुटि प्राप्त करते हैं।
which
हमेशा एक रास्ता देता है। type ls
यह निर्धारित करने के लिए उपयोग करें कि शेल क्या सोचता ls
है (अंतर्निहित, फ़ंक्शन, निष्पादन योग्य)।
ls
उपयोगिता IEEE Std 1,003.1-2001 (के अनुरूप होना चाहिए POSIX.1
) जिसमें कहा गया है:
22027: यह वर्तमान लोकेल में कोलाटिंग सीक्वेंस के अनुसार डायरेक्टरी और नॉन-डायरेक्टरी ऑपरेशंस को अलग-अलग छांटेगा।
26027: डिफ़ॉल्ट रूप से, प्रारूप अनिर्दिष्ट है, लेकिन आउटपुट को प्रतीक नाम से वर्णानुक्रम में क्रमबद्ध किया जाएगा :
- लाइब्रेरी या ऑब्जेक्ट नाम, यदि −A निर्दिष्ट है
- प्रतीक का नाम
- प्रतीक प्रकार
- प्रतीक का मूल्य
- यदि लागू हो तो प्रतीक से संबंधित आकार
.bashrc
उपनाम के लिए अपनी फ़ाइल की जाँच करें ।
alias
सभी मौजूदा उपनामों की जांच करने के लिए टाइप कर सकता है ।
In Debian Jessie, this works nice:
ls -lah --group-directories-first
# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha
# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --