यूनिक्स का 'ls' नाम से क्रमबद्ध


127

क्या आप नाम से एक ls लिस्टिंग सॉर्ट कर सकते हैं ?


10
यदि यह बिना किसी तर्क के नाम से छँटाई कर रहा है, तो आप यह जांचना चाहते हैं कि क्या ls को किसी और चीज़ के लिए अलियास किया गया है, या इसे पूर्ण पथ का उपयोग करके इसे लागू करें जो किसी भी उपनाम को समाप्त कर देगा।
tvanfosson

डिफ़ॉल्ट रूप से gnu-coreutils ls प्रकार। आप किस प्रणाली का उपयोग कर रहे हैं (जैसा कि अन्य ने पूछा है)
निक फोर्टेस्क्यू

क्या आप सुनिश्चित हैं कि आपका नाम नाम से छाँटने के लिए कहा जा रहा है न कि प्रकार से।
१।

कैपिटल लेटर्स लोअरकेस अक्षरों से पहले आते हैं, इस प्रकार फ़ाइल Z फाइल से पहले आती है ... मैं इसे कैसे ठीक कर सकता हूं?
आर्टऑफवर्फ

मैन पेज कहता है कि 'अलग-अलग और क्रमबद्ध क्रम में'। फ़ाइलें पहले वर्ण के अनुसार क्रमबद्ध होती हैं: संख्यात्मक [0..9] और UPPER वर्ण [A..Z] और निम्न वर्ण [az]
Gürol Canbek

जवाबों:


131

मेरा एलएस डिफ़ॉल्ट रूप से नाम से सॉर्ट करता है। आप क्या देख रहे हो?

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काम नहीं लगता)
dhc

1
वह सत्य नहीं है। के साथ ls -la, मैं देखता हूं: .bashrc - can - .config - Downloads - .local - tmpसॉर्ट नाम होगा:.bashrc - .config - .local - Downloads - can - tmp
12431234123412341234123

1
मेरा कहना है कि 100.jpg 10.jpg से पहले आता है। लगता है मुझे लगता है कि अगर "0" से पहले आता है। " लेकिन यह अभी भी सहज नहीं है
15

मैं "b" से पहले "M" देख रहा हूं। उलझन में। रुको, क्या पूंजीकरण मायने रखता है?
डेनियल स्प्रिंगर

106

कुछ सरल के लिए, आप एलएस को सॉर्ट के साथ जोड़ सकते हैं । फ़ाइल नामों की सूची के लिए:
ls -1 | तरह

उन्हें उल्टे क्रम में क्रमबद्ध करने के लिए:
ls -1 | सॉर्ट -r


3
क्या फाइलों को इस तरह क्रमबद्ध करने का कोई तरीका है: 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 देख सकते हैं ।
BBK

मैं एक Pidion डिवाइस पर कुछ Android विकास कर रहा हूं, और ls स्वचालित रूप से सॉर्ट नहीं करता है, इसलिए यह बहुत मददगार था! केवल समस्या यह है कि ऐसा लगता है कि यह नरम लिंक को सॉर्ट करता है, लेकिन किसी कारण से फ़ाइलों को सॉर्ट नहीं करता है
मिच

मैक पर, ऐसा लगता है कि दूसरी कमांड को छोटा किया जा सकता है ls -1r
ऐश रयान अर्नविन

4
@BBK सॉर्ट -V संस्करण संख्याओं द्वारा सॉर्ट करेगा, इसलिए आपको मिलता है .. 2.10.2; 2.10.15; .. मैन सॉर्ट से .. - sort = WORD, WORD के अनुसार सॉर्ट करेगा: जनरल-न्यूमेरिक -g, ह्यूमन-न्यूमेरिक -एच, महीने -M, न्यूमेरिक -n, रैंडम -R, वर्जन -V
mosh

35

lsडिफ़ॉल्ट रूप से coreutilsएक स्थानीय-जागरूक प्रकार करता है , और इस प्रकार कुछ मामलों में आश्चर्यजनक परिणाम उत्पन्न कर सकता है (उदाहरण के लिए, %fooबीच barऔर quuxमें सॉर्ट करेगा LANG=en_US)। यदि आप एक ASCIIbetical सॉर्ट चाहते हैं, तो उपयोग करें

LANG=C ls

LANGilfnuence की तरह व्यवहार, यह पोस्ट मेरी बहुत मदद करती है!
युरेनचेन

यह मेरे लिए भी काम किया। क्या आपक लिए इसे विस्तार से कहना संभव है? यह अलग तरह से क्यों होता है?
कोस्टास

1
यह खुराक काम करती है, लेकिन ?हर गैर-अस्की चरित्र के लिए आउटपुट जब आउटपुट एक टर्मिनल होता है (ls से खराब सुविधा यह जांचती है कि क्या यह टर्मिनल के लिए आउटपुट है, पाइपिंग करते समय काम करता है)। आप बिल्ली को पाइपिंग के साथ इसे "ठीक" कर सकते हैं, C.UTF-8लोकेल का उपयोग कर सकते हैं (यदि आपका सिस्टम इसका समर्थन करता है) और / या -bध्वज का उपयोग करें । इससे भी बेहतर, बिल्कुल उपयोग न करें ls, बेहतर उपयोग करें
12431234123412341234123

इससे मुझे यह पता लगाने में मदद मिली कि मेरे लिए, समस्या यह थी कि मेरे कुछ फ़ाइलनामों में एक हाइफ़न (-) और कुछ एन डैश (-) थे। lsएन डैश से पहले हाइफ़न को सॉर्ट करें।
जेमी महाबियर

17

* निक्स उपकरणों की सुंदरता आप उन्हें जोड़ सकते हैं:

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सॉर्ट कमांड में जोड़ें ।


1
क्या -k9,9मतलब है?
भाग्योदयकाल

पता चला, इसका अर्थ 9है एक ही कॉलम तक कॉलम को सॉर्ट करना 9। एक सामान्य lsआउटपुट इस तरह दिखता है: drwx------ 8 999 user 4.0K Feb 5 2017 file.txtइसलिए 9 कॉलम फ़ाइल नाम हैं। यदि आप मामले को अनदेखा करना चाहते हैं, तो --ignore-caseसॉर्ट करें।
भाग्योदयकाल

8

सूचना: "ए" के बाद "जेड" आता है:

$ स्पर्श A.txt aa.txt Z.txt

$ एल.एस.

A.txt Z.txt aa.txt


3
यह हमेशा सही नहीं होता। मैं वास्तव में उन परिस्थितियों को नहीं जानता हूं जो इसे सच नहीं बनाती हैं, लेकिन उबंटू 12.04 पर चलने वाली मेरी मशीन पर एलएस का आउटपुट वर्णानुक्रम (मामले की अनदेखी) को क्रमबद्ध किया गया है।
पैट्रिक जेम्स मैकडॉगल

अच्छी पकड़! ऐसा लगता है कि यह ASCII कोड के आधार पर इसे ऑर्डर कर रहा है .. ऊपरी मामले अक्षर नीचे के द्वारा पीछा किया जाता है ..
Kent Pawar

1
मैंने देखा कि मेरा MacOS पहले नंबरों को सॉर्ट करता है, फिर अपरकेस अक्षर, फिर अंडरस्कोर और फिर लोअरकेस अक्षर। यह मजेदार है कि वे संवेदनशील नहीं हैं। दूसरी ओर, मेरा डेबियन मामला संवेदनशील है लेकिन यह असंवेदनशील रूप से अक्षरों को छाँटता है जब तक कि कोई टाई न हो, तो लोअरकेस जीत जाता है! उदहारण: ABA.txt ABb.txt aBC.txt AbC.txt ABc.txt
zk82

मैं एक पर हूँ MAC भी। मुझे ए, जेड, ए, जेड प्रकार की छंटाई देखकर निराशा हुई। मैं यहां इसलिए हूं क्योंकि मुझे ए, ए, जेड, ए पसंद है। आपकी टिप के लिए धन्यवाद। normalयहाँ समाधान की कोशिश करेंगे ।
nyxee

8

केवल एक संख्यात्मक स्ट्रिंग द्वारा भिन्न होने वाली फाइलें इस संख्या पर इस शर्त पर छांटी जा सकती हैं कि यह एक विभाजक द्वारा पूर्ववर्ती है।

इस स्थिति में, निम्न सिंटैक्स का उपयोग किया जा सकता है:

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

4

मैन पेज से (bash ls के लिए):

अगर कोई -cftuSUX और न ही -sort में से कोई भी हो, तो वर्णानुक्रम में प्रविष्टियों को क्रमबद्ध करें।


3
कोई "बैश ls" नहीं है। "जो एलएस" करें
नोर्बर्ट हार्टल

@ नॉर्बर्ट: आप सही हैं, लेकिन which lsअगर बैश में बिलियन एलएस होता तो भी यह सफल होता। बल्कि, builtin lsमार-काट करते हैं, और एक त्रुटि प्राप्त करते हैं।
पियानोसॉरस

4
@ नॉर्बर्ट: whichहमेशा एक रास्ता देता है। type lsयह निर्धारित करने के लिए उपयोग करें कि शेल क्या सोचता lsहै (अंतर्निहित, फ़ंक्शन, निष्पादन योग्य)।

3

lsउपयोगिता IEEE Std 1,003.1-2001 (के अनुरूप होना चाहिए POSIX.1) जिसमें कहा गया है:

22027: यह वर्तमान लोकेल में कोलाटिंग सीक्वेंस के अनुसार डायरेक्टरी और नॉन-डायरेक्टरी ऑपरेशंस को अलग-अलग छांटेगा।

26027: डिफ़ॉल्ट रूप से, प्रारूप अनिर्दिष्ट है, लेकिन आउटपुट को प्रतीक नाम से वर्णानुक्रम में क्रमबद्ध किया जाएगा :

  • लाइब्रेरी या ऑब्जेक्ट नाम, यदि −A निर्दिष्ट है
  • प्रतीक का नाम
  • प्रतीक प्रकार
  • प्रतीक का मूल्य
  • यदि लागू हो तो प्रतीक से संबंधित आकार

2

.bashrcउपनाम के लिए अपनी फ़ाइल की जाँच करें ।


7
कोई भी aliasसभी मौजूदा उपनामों की जांच करने के लिए टाइप कर सकता है ।
Krzysztof Jabłoński

2

ls -X उस उद्देश्य के लिए काम करता है, यदि आपने अलियास एलएस को अधिक उपयोगी डिफॉल्ट किया है।


0
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 --
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.