Ls -f का क्या मतलब है (या, यह फांसी क्यों है?)


9

मुझे इसमें लगभग 100,000 फ़ाइलों के साथ एक निर्देशिका मिली है। ls -f एक मिनट से अधिक समय तक लटका रहता है। मैं स्ट्रेस भाग गया, और तुरंत गेट्स देखना शुरू कर दिया, इसलिए एलएस स्पष्ट रूप से डायरेक्टरी पढ़ रहा है। मैं ब्रॉक को बहुत सारे कॉल देखता हूं, इसलिए एलएस स्पष्ट रूप से मेमोरी में चीजों को बफर कर रहा है। मैंने एक साधारण प्रोग्राम लिखा जो रीडिर को कॉल करता है और फाइलनाम को आउटपुट करता है, और यह तुरंत प्रतिक्रिया करता है। लेकिन ls -f आउटपुट प्रदान नहीं करता है। क्या देता है? मुझे लगा कि -f का पूरा बिंदु यह है कि यह ls को रीडिर से अधिक कुछ नहीं करने का कारण बनता है। क्या किसी निर्देशिका की सामग्री को सूचीबद्ध करने का एक पोर्टेबल, विश्वसनीय तरीका है? (ध्यान दें, यह लिनक्स पर ग्नू के कोर्यूटिल्स से ls है।)

-EDIT-

जगह में एक उपनाम था, लेकिन "/ बिन / एलएस -1 एफ> / देव / नल" में 8 से 15 सेकंड लगते हैं, "/ बिन / एलएस -1 एफएक्स> / देव / नल" 4 से 11 सेकंड लगते हैं, लेकिन एक सरल कार्यक्रम कि सिर्फ readdir लेता है .011 सेकंड। गन्नू को चूसने के लिए मुझे क्या करने की आवश्यकता है?

जवाबों:


7

इसका -fउद्देश्य हर फ़ाइल प्रविष्टि को स्टेट करने की आवश्यकता से बचने और किसी भी प्रदर्शित होने से पहले उन सभी को पढ़ने की आवश्यकता से बचने का है। यह एक "मेटा" विकल्प है जो अन्य विकल्पों को निष्क्रिय करता है।

तो, हाँ, यह वही करना चाहिए जो आप उम्मीद करते हैं। मैं जवाब नहीं दे सकता कि यह क्यों नहीं है, लेकिन मुझे लगता है कि आपके पास शेल उपनाम या कुछ और हो सकता है जो कमांड में अतिरिक्त विकल्प सम्मिलित करता है। यह अक्षमता की तुलना में एक सुविधा को फिर से लागू -fकर सकता है, और इसे "अधिक विशिष्ट" माना जाता है, इसलिए पूर्वता लें।


2
Argghh। ls () {/ बिन / ls -FB $ @; } स्टूपिड स्टार्टअप स्क्रिप्ट।
विलियम पर्ससेल

1
हम्म। मैं फ़ंक्शन को परेशान करता हूं और जब भी मैं / बिन / एलएस चलाता हूं, तब भी मुझे वही व्यवहार दिखाई देता है।
विलियम परसेल

Do / bin / ls -f -1 (यह ऋण-एक है, नाबालिग-ell नहीं)। आरएचईएल बॉक्स पर / बिन / एलएस मैं किसी कारण के लिए कॉलम में स्वरूपों फ़ाइल नामों का उपयोग कर रहा हूं।
ब्रूस एडगर

0

Coreutils 7.0 (8d974b00fbc2025de63e1e6d54827648fefa1c4 के लिए) में एक अनुकूलन जोड़ा गया था:

2008-08-01  Kamil Dudka  <kdudka@redhat.com>
    ls -U1 now uses constant memory
    When printing one name per line and not sorting, ls now uses
    constant memory per directory, no matter how many files are in
    the directory.
    * ls.c (print_dir): Print each file name immediately, when possible.
    * NEWS: Mention the improvement.

पहली व्याख्या जो दिमाग में आती है, वह है कि आप पुराने संस्करणों को चला रहे हैं। आपको अपग्रेड करने की आवश्यकता है।

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