लिनक्स केवल फ़ाइल नाम तिथि और आकार दिखाने के लिए ls


71

मैं lsकेवल फ़ाइल नाम और आकार की सूची प्राप्त करने के लिए लिनक्स में कैसे उपयोग कर सकता हूं । मुझे स्वामी या अनुमति जैसी अन्य जानकारी देखने की आवश्यकता नहीं है। क्या यह संभव है?


1
lsयह महान है क्योंकि इसमें डेटाइम द्वारा बहुत तेजी से छंटाई की जाती है, लेकिन प्रारूपण से निपटना कठिन है। मैं सुझाव देता हूं कि --time-style='+&%Y%m%d+%H%M%S.%N'जहां - जहां टोकन '' है, वहां पर एक टोकन का उपयोग करना है, तो उस संदर्भ के रूप में आप आउटपुट को पार्स sedकर सकते हैं ताकि आप टोकन के आकार के ठीक पहले भी बैकट्रैक कर सकें! अगर कोई यह कहना चाहता है कि एक पूर्ण उत्तर के रूप में, बेझिझक, मैं अभी सो रहा हूँ :)
कुंभ पावर

जवाबों:


98

के statबजाय का उपयोग क्यों नहीं ls?

stat -c "%y %s %n" *

1
यह अच्छा है, लेकिन इसमें "पर्यावरण बहुत बड़ा है" / "तर्क सूची बहुत लंबी" समस्या संभावित है।
Mat

4
:-) बस अवधारणा का एक प्रमाण। वास्तविक जीवन में [tm] यह एकfind . -type f -print0 | xargs -0 stat -c "%y %s %n"
f4m8

5
के आउटपुट को प्रारूपित करने के लिए stat, आप सी प्रिंटफ फ़ंक्शन जैसे प्रारूप स्ट्रिंग में चौड़ाई की जानकारी जोड़ सकते हैं , उदाहरण के लिए "%y %8s %n", यह प्रलेखित नहीं है, लेकिन लगता है कि काम करता है (coreutils 8.17, Fedora 18)
लियूयान

क्योंकि lsमैं इसे एक हजार विभाजक चार के साथ आउटपुट कर सकता हूं। यह कैसे काम करता है stat?
अल बंडी

मैं नहीं देखता कि यह कैसे सवाल का जवाब देता है ?! यह बॉक्स समाधान के बाहर एक अच्छा है, लेकिन आप सभी लाभ खो देंगे ls। रंगों के बारे में क्या ??
एम एस बेर्न्स

29

आप findउपयोगिता के साथ फ़ाइलों को कैसे सूचीबद्ध करते हैं, इसके बारे में आप बहुत नियंत्रण प्राप्त कर सकते हैं । lsवास्तव में आपको आपके इच्छित कॉलम को निर्दिष्ट नहीं करने देता।

उदाहरण के लिए:

$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601   4096    .
20111007.0601   2   b
20111001.1322   4096    a

printfकार्रवाई का तर्क मैनपेज में एक विस्तृत है। आप अलग-अलग समय की जानकारी चुन सकते हैं, आपको कौन सा आकार चाहिए (फ़ाइल आकार या डिस्क ब्लॉक का उपयोग किया गया), आदि। यदि आप आगे की प्रक्रिया की आवश्यकता है, तो आप इसे असामान्य फ़ाइल नामों के लिए भी सुरक्षित बना सकते हैं।


ऊपर दिए गए इनपुट को खोजने के लिए ('% CY% Cm% Cd।% C ...') लंबा है। कम से कम GNU खोज में %C+(आउटपुट "2016-08-29 + 10: 57: 56.9201257840") और %Cc(आउटपुट "Mo 29 अगस्त 2016 10:57:56 CEST")
guettli

काश यह मैक पर काम करता।
जरीन

सुंदर, और यदि आप अभी पूरा पथ और आकार प्रिंट करना चाहते हैं, इस काम करना चाहिए "/ to / -printf '% ज /% च% s \ n' लगता है / पथ"
Pierluigi Vernetto

24

आप हमेशा 1awk के आउटपुट को प्रारूपित करने के लिए एक और उपयोगिता का उपयोग कर सकते हैं :ls

/bin/ls -ls | awk '{print $7,$8,$9}'


1. हाँ, आम तौर पर, आपको ls के आउटपुट को पार्स नहीं करना चाहिए , लेकिन इस मामले में प्रश्न विशेष रूप से इसके लिए कहता है ...


हालांकि फ़ाइल का आकार मुद्रित नहीं करता है। और यह केवल उन में व्हॉट्सएप के साथ फाइलनाम के पहले भाग को प्रिंट करता है। और यह विफल हो सकता है अगर lsअलियास (कहो alias ls='ls -i')। यदि आप पार्सिंग एलएस आउटपुट के बारे में जाना चाहते हैं तो आपको वास्तव में बहुत ध्यान रखना चाहिए।
Mat

मेरे पास फ़ाइल आकार था और फिर इसे संपादित किया (अस्पष्ट क्षण) - मैं इसे पुनर्स्थापित करूँगा। और मैं सभी ls
कैविएट के

मैं असहमत हूं, ओपी फिल्नामों को चाहता है, न कि फिल्नामों के पहले भाग को अगर फिल्नाम में व्हॉट्सएप होता है। (प्रयोग /bin/lsसे उपनाम की समस्या से बचा जा सकता है।)
Mat

यह स्पष्ट रूप से समझा जाता है : जो स्पष्ट रूप से कहा गया है वह यह है कि ओपी एक समाधान चाहता है lsजिसके साथ हम दोनों सहमत हैं कि व्हॉट्सएप की आवश्यकता को पूरा नहीं किया जाएगा। /bin/lsसुझाव एक अच्छा एक है।
जसोनव्रीयन

इस समाधान को प्यार करो; मुद्रण नहीं करने के बारे में पिछली टिप्पणियों के संबंध में, आप ls के साथ आकार प्राप्त कर सकते हैं, और -hइसे मानव-पठनीय बनाने के लिए उपयोग कर सकते हैं । विशेष रूप से मैंने इस्तेमाल किया: ls -lah | awk '{print $5,$6,$7,$8}'जो पैदावार 4.0K Jan 24 18:17:। दी, मूल समाधान जाग के बारे में कुछ नहीं कहता है, लेकिन लिनक्स में हमें यह मान लेना चाहिए कि एक प्रक्रिया का आउटपुट हमेशा दूसरी प्रक्रिया के लिए इनपुट होगा, है ना? ;)
abgordon

5

आप 'दिनांक' कमांड का उपयोग भी कर सकते हैं। यह इस्तेमाल में बहुत आसान है:

तारीख -r [फ़ाइल नाम]


अच्छा लगा, यह मेरे लिए नया था। दुर्भाग्य से यह date -r foo*.txtdate: extra operand "foo2.txt"
ग्लोबिंग के

4

यदि आप एलएस का उपयोग करना चाहते हैं, लेकिन उचित आकार को संरक्षित करते हैं, तो आप उपयोग कर सकते हैं:

ls -Ss1pq --block-size=1

1

जहां अंतरिक्ष को विभाजक के रूप में परिभाषित किया गया है और f6 का अर्थ है क्षेत्र 6

ls -lt | cut -d" " -f6-

2
यह विफल रहा क्योंकि ls इंडेंटेशन के लिए रिक्त स्थान का उपयोग करता है और कभी-कभी यह -6 होता है- अन्य बार यह -f5- है
कुंभ पावर

1

आप दो कमांडों को पाइपलाइन कर सकते हैं

ls -l|cut -d" " -f5

1
यह विफल रहा क्योंकि ls इंडेंटेशन के लिए रिक्त स्थान का उपयोग करता है और कभी-कभी यह -6 होता है- अन्य बार यह -f5- है
कुंभ पावर

-1

ls -s1 रिटर्न फ़ाइल आकार और नाम केवल AIX पर, लिनक्स के बारे में निश्चित नहीं है


2
क्या आप बता सकते हैं कि आप कैसे / क्यों मानते हैं कि यह प्रश्न का उत्तर देता है?
स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.