0 के अंत में पिछली जगहों वाली फ़ाइलों को ढूंढें I प्रत्येक पंक्ति के अंत में पिछली जगहों वाली फ़ाइलों को ढूंढने के लिए एक बैश कमांड की तलाश में हूं। मुझे रिक्त स्थान हटाने में दिलचस्पी नहीं है, लेकिन केवल फाइलों को ढूंढने में।बैश:
बैश:
उत्तर
एक या अधिक अनुगामी रिक्ति के साथ फ़ाइलें खोजें:
find . -name "*" | xargs egrep ".* +$"
मेरा मानना है कि मूल प्रश्न उन फ़ाइलों को ढूंढना था जिनके पास सभी पंक्तियों पर पीछे की जगह है। हालांकि, मूल रूप से केवल खराब शब्द हो सकता है। – Nit
@ नोट यह शरीर में स्पष्ट रूप से कहता है, उसे याद किया होगा, लेकिन प्रश्न हेडर संदिग्ध हो सकता है। – matcheek
आपके समाधान पर विस्तार, यद्यपि, 'egrep-m1 -v -l "। * + $" 'उन सभी फ़ाइलों को ढूंढना चाहिए जो ** ** नहीं है ** ** प्रत्येक पंक्ति पर पिछली जगहों पर नहीं है, अगर मुझे गलत नहीं लगता है? – Nit
रिक्त स्थान अनुगामी है कि फाइलों का पता लगाएं।
find . -type f -exec egrep -l " +$" {} \;
जबकि आप कर सकते हैं केवल 'grep' के साथ करें, जैसा कि अन्य उत्तरों ने दिखाया है,' ढूंढ 'का उपयोग करना अभी भी एक अच्छा विचार हो सकता है, अगर आप जांच करने के लिए कौन सी फाइलों पर अधिक नियंत्रण चाहते हैं।, तो आप 'find' कमांड को' + '' बजाय की \; '' -exec' प्राथमिक समाप्त करने के लिए - 'यह लागू करेगा egrep' (आमतौर पर) केवल _once_, _all_ फ़ाइल नामों के साथ है कि इस सवाल का जवाब tra साथ _at कम से कम 1_ लाइन के साथ फ़ाइलें पाता – mklement0
नोट। iling रिक्त स्थान। यह निश्चित रूप से उपयोगी हो सकता है और शायद अधिक आम उपयोग केस है, लेकिन ओपी ने पूछा नहीं है (कम से कम उनके शब्द ", _each_ लाइन के अंत में") द्वारा निहित है। – mklement0
लक्ष्य जो एक या अधिक पंक्तियों में व्हाइटस्पेस अनुगामी गई फ़ाइलों को सूचीबद्ध करने के लिए है, तो:
grep -r '[[:blank:]]$' .
लाइनों मुद्रित नहीं करने के लिए, और प्रिंट सिर्फ फ़ाइल नाम ही, यह भी -l
विकल्प निर्दिष्ट । l
list
शब्द के रूप में 1
पर नहीं है।
उन फ़ाइलों को सूचीबद्ध करने का एक विकल्प है जिनमें उनमें कोई भी मिलान नहीं है; लाइन के अंत से पहले एक जगह के अलावा किसी चरित्र के लिए उस और एक रेगेक्स का उपयोग करें।
grep -L '[^ ]$' *
निर्देशिकाओं की पुनरावृत्ति करने के लिए, -r
जोड़ें। अन्य व्हाइटस्पेस वर्णों के साथ-साथ, रेगेक्स के लिए एक वर्ण वर्ग $'[^ \t]$'
या POSIX '[^[:blank:]]$'
का उपयोग करें।
अच्छी तरह से किया गया। यह वास्तव में केवल उन फ़ाइलों को लौटाता है जिनकी लाइनों में पिछली जगहें हैं - एक अपवाद के साथ: _empty_ (शून्य-बाइट) फ़ाइलें भी मेल खाती हैं। साथ ही, '*' ('-r' के बिना) का उपयोग उपनिर्देशिकाओं के लिए चेतावनियों के परिणामस्वरूप होगा, यदि कोई हो। '-L' POSIX-compliant नहीं है, लेकिन व्यापक रूप से समर्थित है, यह देखते हुए कि जीएनयू grep और बीएसडी दोनों इसे लागू करते हैं। – mklement0
@ mklement0 शून्य आकार की फ़ाइलों के बारे में अच्छी पकड़। निर्देशिकाओं के बारे में चेतावनियों को दबाने के लिए आप '-s' का उपयोग कर सकते हैं, या' -r .' का उपयोग कर सकते हैं यदि आप एक संपूर्ण निर्देशिका पेड़ को पार करना चाहते हैं (ओपी कार्य के बारे में अनिश्चित था)। – tripleee
सवाल सचमुच है हर एक पंक्ति के अंत में एक खाली है फ़ाइलों को खोजने के लिए है, तो यह काम करना चाहिए:
grep -rL '[^[:blank:]]$' .
-L
grep
बताता है हर फ़ाइल है कि पैटर्न से मेल नहीं खाता रिपोर्ट करने के लिए , और पैटर्न उन लाइनों की तलाश में है जिनके पास नई लाइन से पहले रिक्त स्थान नहीं है।
लक्ष्य वर्तमान पथमें खाली स्थान के पूर्ण विराम वाले सूची फ़ाइलें रहा है:
grep -rli '[[:blank:]]$' .
नोट: प्रश्न के शब्द (इस लेखन के रूप में) स्पष्ट रूप से फ़ाइलें खोजने के लिए कहता है जबकि _each और प्रत्येक line_ पर पिछली जगहों के साथ, इस आवश्यकता की असामान्यता के परिणामस्वरूप कुछ जवाब सामने आए हैं - विशेष रूप से सबसे अधिक वोट वाले लोगों के साथ- पीछे की जगहों के साथ _one या more_ लाइनों वाली फ़ाइलों को ढूंढना। – mklement0
sed -n '/ \ + $/p' फ़ाइल नाम – Luv33preet