क्या आप नाम से एक 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
LANGilfnuence की तरह व्यवहार, यह पोस्ट मेरी बहुत मदद करती है!
?हर गैर-अस्की चरित्र के लिए आउटपुट जब आउटपुट एक टर्मिनल होता है (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 --