วิธีหา คำต่างๆใน file โดยไม่สนใจว่าจะอยู่ที่ไหน
November 14th, 2014แบ่งปั่น วิธีการของผมในการหาข้อมูลใน file ต่างๆ บน Unix Linux ที่โดนบีบอัดข้อมูลไว้ หรือที่ยังไม่บีบอัดไว ก็สามารถประยุกต์เอามาใช้กันได้
บางครั้งเราไม่รู้ว่าไฟล์อยู่ที่ไหนบ้าง หรือรู้ แต่มันมีอยู่หลายๆที่ จะได้สะดวกในการค้นหา
วิธีที่ 1 ค้นหาไฟล์ ชื่ออะไรก็ตามที่ถูกบีบอัดไว(Zip) แล้วให้ exec และค้นหาคำที่เราต้องการ
1 2 3 | $ $find [path] -type f -name [file name].gz -exec [command] {} \;|grep [key word for need] $ |
Ex.
1 2 3 4 | $find . -name *.gz -exec gunzip -c {} \;|grep 101400004 $ $find . -type f -name *.gz -exec gunzip -c {} \;|grep 101400004 $ |
วิธีที่ 2
1 2 3 4 5 | $ $find . -name *.gz -exec zgrep 101400004 {} \;|wc -l $ $find . -name *.gz -exec zgrep 101400004 {} \;|wc -l $ |
จากตัวอย่าง ให้หาจาก path ปัจจุบัน โดยหาไฟล์อะไรก็ตามที่ลงท้ายด้วย gz ถ้าเจอให้เข้าไปอ่านไฟล์ทั้งหมด โดยไม่ต้องแตก(unzip) แล้วให้ filter เฉพาะ “101400004”
หรือถ้าต้องการจะนับจำนวนคำที่เราพบ ให้เพิ่ม wc -l เข้าไป
Ex.
1 2 3 | $ $find . -name aaaa*.gz -exec gunzip -c {} \;|grep 101400004|wc -l $ |
เสริม ^_^
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $ find . -type f -name *.gz ./test/aaaa.txt.gz ./test/aaaa1.txt.gz ./test/aaaa2.txt.gz ./test/aaaa3.txt.gz ./test/aaaa4.txt.gz $ find . -type f -name *.gz -exec gunzip -c {} \;|grep 101400004 101400004 test open windows 101400004 test open windows 101400004 test open windows 101400004 test open windows 101400004 test open windows $ |
เพี่ยงเท่านี้เราก็หาอะไรได้ง่ายขึ้นแล้วครับ