ค้นหาคำสั่งเพื่อค้นหาชื่อโฟลเดอร์เฉพาะกว่าการค้นหาภายในผลลัพธ์


1

ฉันมีเว็บไซต์เวิร์ดเพรสมากมายที่โฮสต์ในสภาพแวดล้อมการโฮสต์ที่ใช้ร่วมกัน เช่นเดียวกับทุกเว็บไซต์ WordPress มีไดเรกทอรี "อัปโหลด" ฉันต้องการค้นหาไฟล์ที่อาจเป็นอันตรายที่อยู่ในโฟลเดอร์เหล่านั้นเป็นประจำ แต่ฉันไม่ต้องการให้หลักสูตรทำทีละไฟล์

ดังนั้นคำถามคือฉันจะค้นหาไดเรกทอรี "อัพโหลด" ทั้งหมดสำหรับไฟล์ที่มีนามสกุล ".php" ได้อย่างไร

ตัวอย่างเช่น:

find . -type d -iname "uploads"

ทำให้ฉันได้รับทุกโฟลเดอร์ "อัพโหลด" ในไดเรกทอรีรากของฉัน แต่ฉันยังต้องการค้นหาภายในผู้อำนวยการเหล่านั้น

คำตอบ:


3

เป็นไปได้ที่จะไพพ์เอาต์พุตจากคำสั่งของคุณไปยังอีก แต่คุณสามารถค้นหาเกณฑ์ทั้งสองในครั้งเดียวโดยใช้grepและนิพจน์ปกติ :

find . -type f | grep -i "/uploads/.*\.php$"

มันทำงานอย่างไร:

  • find . -type fแสดงรายการไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันและไดเรกทอรีย่อย

  • grep -i "/uploads/.*\.php$" กรองผลลัพธ์:

    • -i ทำให้การค้นหาเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

    • /uploads/.*\.php$ เป็นนิพจน์ทั่วไปที่บรรทัดต้องตรงกันเพื่อแสดง

      • /uploads/ php เป็นอย่างนั้น

      • .* คือจำนวนครั้งของอักขระประเภทใด ๆ

      • \. เป็นตัวอักษร .

      • $ สัญญาณจุดสิ้นสุดของบรรทัด

คุณสามารถบรรลุผลลัพธ์เดียวกันกับ

find . -type f -iregex ".*/uploads/.*\.php"

แต่ไวยากรณ์นั้นสร้างความยุ่งยากถ้าคุณรู้จักนิพจน์ทั่วไปจากgrep, Perl, PHP, JavaScript และอื่น ๆ

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