बहिष्करण के साथ विशिष्ट फ़ाइल पथ कैसे खोजें और प्रिंट करें?


2

लक्ष्य: .txt फ़ाइल पूर्ण निर्देशिका पथ के साथ, नाम सहित सभी .html फ़ाइलों के साथ। Html फ़ाइल नाम में "txt" या "पाठ" को छोड़कर

मैंने पाया कि निम्न पंक्ति मुझे फ़ाइल की पूर्ण निर्देशिका पथ के साथ वांछित .txt फ़ाइल देती है। एकमात्र समस्या यह है कि यह मुझे फ़ोल्डर की सभी सामग्री देता है:

ls -d "$PWD"/* > fileList.txt

उदाहरण परिणाम:

/Users/username/Desktop/WebsiteFiles/notes.txt
/Users/username/Desktop/WebsiteFiles/index.html
/Users/username/Desktop/WebsiteFiles/index-TEXT.html
/Users/username/Desktop/WebsiteFiles/answers.html
/Users/username/Desktop/WebsiteFiles/answers_txt.html
/Users/username/Desktop/WebsiteFiles/image.jpg
/Users/username/Desktop/WebsiteFiles/image2.jpg
/Users/username/Desktop/WebsiteFiles/about.html
/Users/username/Desktop/WebsiteFiles/about_TXT.html
/Users/username/Desktop/WebsiteFiles/contact.html
/Users/username/Desktop/WebsiteFiles/contact_text.html
/Users/username/Desktop/WebsiteFiles/images

वांछित परिणाम:

/Users/username/Desktop/WebsiteFiles/index.html
/Users/username/Desktop/WebsiteFiles/answers.html
/Users/username/Desktop/WebsiteFiles/about.html
/Users/username/Desktop/WebsiteFiles/contact.html

प्रयोग:

मैं कमांड लाइन का उपयोग करने के लिए काफी नया हूं। मैं इस सामान का पता लगाने की कोशिश कर रहा हूं। मैंने पाया कि निम्नलिखित खोज सभी .html फ़ाइलों को खोजने में मदद करती है:

find . -iname '*.html' 

जब मूल निर्देशिका पर उपयोग किया जाता है तो यह मुझे सभी .html फाइलें देगा लेकिन पूर्ण निर्देशिका पथ नहीं, उदाहरण परिणाम:

./index.html
./index-TEXT.html
./answers.html
./answers_txt.html
./about.html
./about_TXT.html
./contact.html
./contact_text.html

मैं इन कमांडों के मापदंडों या संयोजन से काफी परिचित नहीं हूं और नाम में "टेक्स्ट" की भिन्नता वाले किसी भी व्यक्ति के बिना सिर्फ .html फ़ाइलों का प्रिंट प्राप्त करने में सफल नहीं रहा हूं।

मेरे पास इसको खोजने के लिए एक टन फाइलें हैं और पूरे रास्ते के साथ .txt फाइल की जरूरत है। मैं इस सामान को समझना चाहता हूं इसलिए कृपया विस्तृत प्रतिक्रियाएं प्रदान करें!

जवाबों:


2

find उस पथ के साथ पाए गए नामों को आउटपुट करेगा जो आप इसे देते हैं, इसलिए आप कमांड का निर्माण शुरू कर सकते हैं

find /Users/username/Desktop/WebsiteFiles

या, अगर यह वह जगह है जहाँ आप वर्तमान में स्थित हैं,

find "$PWD"

अगला, हम पाए गए नामों को केवल मिलान करने वाले नामों तक ही सीमित रखते हैं *.html:

find "$PWD" -type f -name '*.html'

तुम दोनों है, तो *.htmlऔर *.HTML(या *.hTmL) फ़ाइलें, और अगर आप इन शामिल करना चाहते हैं, तो बदलने -nameके लिए -iname(जो केस-संवेदी नाम मिलान करता है)।

मैंने यह भी कहा -type fकि आपके पास कोई भी निर्देशिका है जिसके नाम मिलान के साथ हैं *.html(हम इसे परिणाम में नहीं देखना चाहते हैं)। -type fकेवल नियमित फ़ाइलों के लिए नाम को प्रतिबंधित करता है।

फिर आप परिणाम से विशेष फ़ाइल नाम हटाना चाहते थे। तार txtया text(ऊपर या नीचे मामले) वाले नाम। यह -inameपरीक्षण को नकारने के माध्यम से किया जा सकता है !:

find "$PWD" -type f -name '*.html' ! -iname "*txt*" ! -iname "*text*"

आखिर तुमने इसे हासिल कर ही लिया है।

प्रत्येक "विधेय" ( -type fआदि) दिए गए निर्देशिका में नामों के खिलाफ एक परीक्षण की तरह काम करता है, और एक अंतर्निहित तार्किक और परीक्षणों के बीच है। यदि सभी परीक्षण पास हो जाते हैं, तो नाम मुद्रित हो जाता है।

मेरी मशीन पर एक अस्थायी निर्देशिका में चल रही फाइलों के साथ, जो आपकी निर्देशिका में है (परीक्षण के लिए सिर्फ खाली फाइलें):

$ ls -l
total 24
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 about.html
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 about_TXT.html
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 answers.html
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 answers_txt.html
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 contact.html
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 contact_text.html
-rw-r--r--  1 kk  wheel    596 Sep 26 17:46 files
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 image.jpg
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 image2.jpg
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 images
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 index-TEXT.html
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 index.html
-rw-r--r--  1 kk  wheel      0 Sep 26 17:47 notes.txt
-rw-r--r--  1 kk  wheel  10240 Sep 26 19:11 test.tar

$ find "$PWD" -type f -name '*.html' ! -iname "*txt*" ! -iname "*text*"
/tmp/shell-ksh.p56GA7BA/index.html
/tmp/shell-ksh.p56GA7BA/answers.html
/tmp/shell-ksh.p56GA7BA/about.html
/tmp/shell-ksh.p56GA7BA/contact.html

1
धन्यवाद! इसने मेरे लिए काम किया। और समझाने के लिए धन्यवाद। मैं अंत में> fileList.txt के आउटपुट को जोड़ने में सक्षम था और उसने वही किया जो मैं चाहता था।
मेलिसा मैककोलम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.