इस बारे में कैसे, जिसे मैं इस पोस्ट में, भाग में, धन्यवाद प्राप्त करने में कामयाब रहा।
आप कई फ़ाइलों को ढूंढना चाहते हैं, विभिन्न नामों के साथ लॉग कहते हैं, लेकिन एक पैटर्न (जैसे filename=logfile.DATE
), एक पैटर्न (उदाहरण /logsapp1, /logsapp2
) के साथ कई निर्देशिकाओं के अंदर । प्रत्येक फ़ाइल में एक पैटर्न होता है जिसे आप grep (जैसे "init time"
) करना चाहते हैं, और आप "init time"
प्रत्येक फ़ाइल का होना चाहते हैं , लेकिन यह जानना कि यह किस फ़ाइल का है।
find ./logsapp* -name logfile* | xargs -I{} grep "init time" {} \dev\null | tee outputfilename.txt
फिर outputfilename.txt
कुछ ऐसा होगा
./logsapp1/logfile.22102015: init time: 10ms
./logsapp1/logfile.21102015: init time: 15ms
./logsapp2/logfile.21102015: init time: 17ms
./logsapp2/logfile.22102015: init time: 11ms
सामान्य रूप में
find ./path_pattern/to_files* -name filename_pattern* | xargs -I{} grep "grep_pattern" {} \dev\null | tee outfilename.txt
स्पष्टीकरण:
find
कमांड पैटर्न में स्थित फाइलनाम को खोजेगा
फिर, पाइप आउटपुट को xargs -I{}
रीडायरेक्ट करेगाfind
{}
जिसके लिए इनपुट होगा grep ""pattern" {}
फिर grep
फ़ाइल नाम प्रदर्शित करने की चाल\dev\null
और अंत में, फ़ाइल के साथ आउटपुट लिखें tee outputfile.txt
यह मेरे लिए grep
संस्करण 9.0.5 के निर्माण में 1989 में काम किया ।
grep --version