मैं केवल गैर-रिक्त फ़ाइलों को ls का उपयोग करके कैसे सूचीबद्ध कर सकता हूं?


36

मैं उन lsसभी फ़ाइलों को कैसे (सूची में ) उपयोग कर सकता हूं, जो लिनक्स का उपयोग करके खाली नहीं हैं (आकार> 0)?

जवाबों:


49

मुझे लगता है मैं find dirname -not -empty -lsGNU लगता है, का उपयोग करेंगे ।


1
किसी को भी नीचे की व्याख्या करने के लिए परवाह है?
डेनिथ

शायद इसलिए कि पूछने वाले ने पूछा lsऔर आपने इस्तेमाल किया find?) हालांकि मैंने इसे छोड़ दिया ... यह एक उचित समाधान है
ब्लडप्रिलिया

2
अगर आप "find-.not -empty -ls" का उपयोग करते हैं, तो इसमें वर्तमान निर्देशिका (जैसे "" "इन आउटपुट") भी शामिल होंगे, बस वर्तमान फ़ाइलों का उपयोग करने के लिए "खोजें। -type -not -empty -ls" शामिल करें
7:67 पर user672009

19

इस के लिए एक नौकरी है खोजने ls शक्तिशाली पर्याप्त नहीं है।

find -maxdepth 1 -size +0 -print

-maxdepth 1 - यह बताता है कि केवल वर्तमान डायर की खोज करें, सभी सब डायर में देखने के लिए निकालें या संख्या को नीचे 2, 3 या अधिक स्तरों पर जाने के लिए बदलें।

-size +0यह 0बाइट्स की तुलना में बड़े आकार वाली फ़ाइलों की तलाश के लिए कहता है । 0आप चाहते हैं कि किसी भी आकार में बदला जा सकता है।

-print बताती है कि वह जिस फ़ाइल को ढूंढती है उसका पूरा रास्ता प्रिंट कर ले

संपादित करें:
देर से जोड़: आपको शायद -type fऊपर का स्विच भी जोड़ना चाहिए । यह बताता है कि फाइल्स को केवल फाइल्स ढूंढना है। और जैसा कि नीचे टिप्पणी में कहा गया है, -printस्विच की वास्तव में आवश्यकता नहीं है।


1
एक चेतावनी से बचने के लिए आपको -maxdepth 1पहले जगह देनी चाहिए -size +0-printडिफ़ॉल्ट क्रिया भी है, इसलिए इसकी आवश्यकता नहीं है।
cYrus

@ क्राइरस - मेरे लिए कोई चेतावनी (
साइबर

findक्या वैध विकल्प हैं और वे कहां जा सकते हैं, इसके संदर्भ में बहुत भिन्नता के कार्यान्वयन । यदि आप पहले डालते हैं तो GNU find(जो सामान्य रूप से सामान्य है) एक चेतावनी का उत्पादन करेगा-size-maxdepth
टेलीमैकस


8
ls -l | awk '{if ($5 != 0) print $9}'

यदि आप उपयोग करने पर आमादा हैं ls, तो आपको थोड़ी मदद की जरूरत है awk


7

फ़ाइलों को फ़िल्टर करने के लिए Ls के पास लगभग कोई विकल्प नहीं है: यह इसका काम नहीं है। फ़ाइलों को फ़िल्टर करना सरल मामलों (ग्लोबिंग के माध्यम से) के लिए शेल का काम है और जटिल मामलों के लिए खोज का काम है।

Zsh में, आप ग्लोबिंग Lक्वालिफायर को केवल उन्हीं फाइलों को बनाए रखने के लिए रख सकते हैं जिनका आकार> 0 है ( .क्वालीफायर नियमित फाइलों तक सीमित है):

ls *(.L+0)

अन्य गोले के उपयोगकर्ताओं को खोजने का उपयोग करना चाहिए। GNU खोज के साथ (जैसा कि ज्यादातर लिनक्स पर पाया जाता है):

find -maxdepth 1 -type f ! -empty -exec ls {} +

POSIX- संगत तरीका है:

find . -type f -size +0c -exec ls {} + -o -name . -o -prune

यदि lsकेवल एक उदाहरण नहीं था और आप केवल दृश्य निरीक्षण का इरादा रखते थे, तो आप आकार के आधार पर छाँट सकते थे ls -S:।


3
 $ find /* -type f ! -size 0

बेहतर होगा अगर आप सभी गैर खाली फ़ाइलों को चाहते हैं, न कि केवल निर्देशिकाओं के बजाय।


1

बश 4.0+

shopt -s globstar
shopt -s nullglob
for file in **/*; do  test -f "$file" && [[ -s "$file" ]] && echo "$file"; done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.