ค้นหาไฟล์ที่เข้าถึงหลังจากสร้างแล้ว


3

ด้วยคำสั่ง find มันเป็นเรื่องง่ายที่จะหาไฟล์ที่ถูกแก้ไขหรือเข้าถึงได้ภายในระยะเวลาที่กำหนด

เมื่อไฟล์ถูกสร้างขึ้นเวลา acesss จะเหมือนกับเวลาแก้ไข แต่ทันทีที่มีการเข้าถึง (อ่าน) เวลาการเข้าถึงจะเปลี่ยนไป แต่เวลาแก้ไขจะไม่

ฉันต้องการค้นหาไฟล์ที่เข้าถึงได้ทั้งหมดเช่น ไฟล์ที่มีเวลาเข้าถึงใหม่กว่าการปรับเปลี่ยนเวลา

ฉันจะทำอย่างไร

คำตอบ:


2

สิ่งนี้น่าจะใช้ได้:

find -type f -print0 | xargs -0 -I % find -path % -anewer %

มันใช้งานได้ดี! คุณอธิบายได้ไหมว่ามันทำงานอย่างไร
marlar

Btw ในระหว่างนี้ฉันสร้างคำสั่งที่น่าเกลียดนี้: find -exec sh -c "stat {} | awk --re-interval '/ ไฟล์: / {file = \ $ 2} / (การเข้าถึง | แก้ไข): [0-9] {4} / {ถ้า (\ $ 1 == == \ "การเข้าถึง: \") การเข้าถึง = \ $ 3; อื่นแก้ไข = \ $ 3} END {ถ้า (การเข้าถึง! = แก้ไข) ไฟล์พิมพ์} '"\;
marlar

@marlar: ค้นหาไฟล์ทั้งหมดจากนั้นส่งไฟล์xargsผ่านอีกไฟล์หนึ่งfindซึ่งจะเปรียบเทียบเวลาในการเข้าถึงกับเวลาที่แก้ไขเอง การ-I %กระทำเช่นตัวแปรที่เก็บชื่อไฟล์และใช้สองครั้งในคำสั่ง find ที่สอง หากมีไฟล์จำนวนมากมันอาจช้าเพราะมันผ่านไฟล์ทั้งหมดสองครั้ง
Dennis Williamson

2

ฉันไม่คิดว่าจะมีวิธีการทำสิ่งนี้ในการสำรวจเส้นทางเดียวกับ GNU find (ค้นหา POSIX เพียงอย่างเดียว) มันเป็นหนึ่งซับที่เรียบง่ายด้วย Perl ของFile::Find:

perl -MFile::Find -e 'find({wanted => sub {print "$File::Find::name\n" if -f && -M _ > -A _}}, @ARGV);' .

ตรวจสอบให้แน่ใจว่าไฟล์ของคุณถูกเมาท์โดยไม่มีตัวเลือกnoatimeหรือrelatime- การแจกแจงลีนุกซ์ล่าสุดนั้นมักจะใช้เป็นค่าเริ่มต้น

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