วิธีค้นหาตามเนื้อหาบน Ubuntu


8

ฉันต้องการค้นหาเนื้อหาทั้งหมดในเซิร์ฟเวอร์ (ไฟล์ข้อความ)

เมื่อฉันลอง grep -rl "text here" มันค้าง

คุณจะทำอย่างไร

และใช้เวลานานเท่าไหร่?

คำตอบ:


17

คุณต้องระบุไฟล์เมื่อใช้grepคำสั่ง ด้วยคำสั่งที่คุณใช้คุณกำลังค้นหาในอินพุตมาตรฐาน ...

ลองgrep -r "test" directoryดู


7
find / -name "*.txt" -exec grep "text here" {} \; -print 2>/dev/null

ซึ่งสามารถอธิบายได้ในมนุษย์พูดเป็น:

  1. หา
  2. เริ่มจาก /
  3. ในไฟล์ทั้งหมดชื่อ * .txt (เครื่องหมายคำพูดเป็นการบายพาสการแปลเชลล์)
  4. ด้วยผลการค้นหาที่ได้รับ
  5. grep "ทดสอบที่นี่"
  6. ในไฟล์ {}
  7. จุดสิ้นสุดของ exec (\;) หลบหนีจุดสิ้นสุดข้อความ
  8. พิมพ์ไฟล์ที่ตรงกัน
  9. ข้อความแสดงข้อผิดพลาดเปลี่ยนเส้นทางในอ่าง (เนื่องจากคุณอาจจะไม่รูทมิฉะนั้นเพียงแค่ sudo)

มันบอกว่า "find: อาร์กิวเมนต์ที่หายไป 'grep'"
webnat0

ทำงานที่นี่ คุณเปลี่ยน "ทดสอบที่นี่" ได้อย่างไร
Alain Pannetier

1
@Daeyun: มีแบ็กสแลชเดียวเท่านั้น
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

1
@Dennis ขึ้นอยู่กับภาษาแม่ของคุณ ในญี่ปุ่นและเกาหลีมีชุดอักขระหลายชุดที่มีเครื่องหมายแบ็กสแลชเป็นเครื่องหมายเยนหรือเครื่องหมายวงศ์ (0x5c) นอกจากนี้โปรดดู u + 20E5 ในอดีตมีการหาประโยชน์หลายอย่างใน IIS ซึ่งคุณสามารถสำรวจดิสก์ทั้งหมด (ซึ่ง IIS มีรูท) ของพีซีเพียงแค่ผสมเครื่องหมายสแลชจริงและเท็จ หนึ่งโดยใช้การซ้อนทับโซลิดัสกลับ
Alain Pannetier

0

คุณลืมระบุประเภทของไฟล์ที่คุณต้องการค้นหา
ตรวจสอบให้แน่ใจว่าคุณเข้าสู่ระบบในฐานะรูท

cd /
grep -rl "text here" *  > /tmp/match.txt

ขั้นตอนนี้ใช้เวลานานมากและคุณสามารถรวบรวมผลลัพธ์ได้ในภายหลังโดยทำเครื่องหมายที่ /tmp/match.txt


0

คำสั่งต่อไปนี้จะค้นหาไฟล์ทั้งหมดที่ลงท้ายด้วย. txt ในไดเรกทอรีการทำงานปัจจุบันและไดเรกทอรีย่อยทั้งหมด:

find . -type f -name '*.txt' -exec grep -Hn "text here" {} \;

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.