ค้นหาเว็บไซต์

วิธีค้นหาไฟล์ล่าสุดหรือไฟล์ที่แก้ไขของวันนี้ใน Linux


ในบทความนี้ เราจะอธิบายเคล็ดลับบรรทัดคำสั่งง่ายๆ สองข้อที่ช่วยให้คุณสามารถแสดงรายการเฉพาะไฟล์ของวันนี้เท่านั้น

ปัญหาทั่วไปประการหนึ่งที่ผู้ใช้ Linux พบในบรรทัดคำสั่งคือการค้นหาไฟล์ที่มีชื่อเฉพาะ ซึ่งจะง่ายกว่ามากเมื่อคุณทราบชื่อไฟล์จริงๆ

อย่างไรก็ตาม สมมติว่าคุณลืมชื่อไฟล์ที่คุณสร้าง (ในโฟลเดอร์ home ซึ่งมีไฟล์หลายร้อยไฟล์) ในช่วงเวลาก่อนหน้าของวัน แต่คุณจำเป็นต้องใช้อย่างเร่งด่วน

ด้านล่างนี้เป็นวิธีต่างๆ ในการแสดงรายการเฉพาะไฟล์ทั้งหมดที่คุณสร้างหรือแก้ไข (ทั้งทางตรงและทางอ้อม) ในปัจจุบัน

1. เมื่อใช้คำสั่ง ls คุณสามารถแสดงรายการไฟล์ของวันนี้ในโฟลเดอร์หลักของคุณได้ดังต่อไปนี้ โดยที่:

  1. -a – แสดงรายการไฟล์ทั้งหมดรวมทั้งไฟล์ที่ซ่อนไว้
  2. -l – เปิดใช้งานรูปแบบรายการแบบยาว
  3. --time-style=FORMAT – แสดงเวลาในรูปแบบที่ระบุ
  4. +%D – แสดง/ใช้วันที่ในรูปแบบ %m/%d/%y
ls  -al --time-style=+%D | grep 'date +%D'

นอกจากนี้ คุณสามารถจัดเรียงรายการผลลัพธ์ตามตัวอักษรโดยรวมแฟล็ก -X:

ls -alX --time-style=+%D | grep 'date +%D'

คุณยังสามารถแสดงรายการตามขนาด (ใหญ่ที่สุดก่อน) โดยใช้แฟล็ก -S:

ls -alS --time-style=+%D | grep 'date +%D'

2. ขอย้ำอีกครั้งว่า คุณสามารถใช้คำสั่ง find ซึ่งมีความยืดหยุ่นมากกว่าและมีตัวเลือกมากมายมากกว่า ls เพื่อจุดประสงค์เดียวกันกับด้านล่างนี้

  1. ระดับ -maxdeep ใช้เพื่อระบุระดับ (ในแง่ของไดเร็กทอรีย่อย) ใต้จุดเริ่มต้น (ไดเร็กทอรีปัจจุบันในกรณีนี้) ที่จะดำเนินการค้นหา
  2. -newerXY ใช้งานได้หาก การประทับเวลา X ของไฟล์ที่เป็นปัญหาใหม่กว่า การประทับเวลา Y ของการอ้างอิงไฟล์ X และ Y เป็นตัวแทนของตัวอักษรใด ๆ ด้านล่าง:

    1. a – เวลาในการเข้าถึงการอ้างอิงไฟล์
    2. B – เวลาเกิดของการอ้างอิงไฟล์
    3. c - เวลาเปลี่ยนสถานะไอโหนดของการอ้างอิง
    4. m – เวลาแก้ไขการอ้างอิงไฟล์
    5. เสื้อ – การอ้างอิงถูกตีความโดยตรงเป็นเวลา

ซึ่งหมายความว่า เฉพาะไฟล์ที่แก้ไขเมื่อ 2016-12-06 เท่านั้นที่จะได้รับการพิจารณา:

find . -maxdepth 1 -newermt "2016-12-06"

ข้อสำคัญ: ใช้ รูปแบบวันที่ ที่ถูกต้องเป็นข้อมูลอ้างอิงในคำสั่ง find ด้านบน เมื่อคุณใช้รูปแบบที่ไม่ถูกต้อง คุณจะได้รับข้อผิดพลาดดังนี้ อันด้านล่าง:

find . -maxdepth 1 -newermt "12-06-2016"

find: I cannot figure out how to interpret '12-06-2016' as a date or time

หรือใช้รูปแบบที่ถูกต้องด้านล่าง:

find . -maxdepth 1 -newermt "12/06/2016"
OR
find . -maxdepth 1 -newermt "12/06/16"

คุณสามารถดูข้อมูลการใช้งานเพิ่มเติมสำหรับคำสั่ง ls และ find ได้ในบทความชุดต่อไปนี้เกี่ยวกับเรื่องเดียวกัน

  1. คำสั่ง Master Linux 'ls' พร้อม 15 ตัวอย่างนี้
  2. 7 เคล็ดลับ Quirky 'ls' ที่เป็นประโยชน์สำหรับผู้ใช้ Linux
  3. คำสั่ง Master Linux 'find' พร้อม 35 ตัวอย่างนี้
  4. วิธีค้นหาชื่อไฟล์หลายชื่อพร้อมนามสกุลใน Linux

ในบทความนี้ เราได้อธิบายเคล็ดลับสำคัญสองข้อในการแสดงรายการเฉพาะไฟล์ของวันนี้ด้วยความช่วยเหลือของ ls และคำสั่งค้นหา ใช้แบบฟอร์มคำติชมด้านล่างเพื่อส่งคำถามหรือความคิดเห็นเกี่ยวกับหัวข้อนี้ถึงเรา คุณสามารถแจ้งให้เราทราบถึงคำสั่งใด ๆ ที่ใช้เพื่อเป้าหมายเดียวกันได้เช่นกัน