วิธีค้นหาไฟล์ที่สร้างขึ้นในชั่วโมงที่แล้วใน unix


138

วิธีค้นหาไฟล์ที่สร้างขึ้นในชั่วโมงที่แล้วใน unix

คำตอบ:


219

หากผบ. ที่ต้องการค้นหาเป็นsrch_dirอย่างใดอย่างหนึ่ง

$ find srch_dir -cmin -60 # change time

หรือ

$ find srch_dir -mmin -60 # modification time

หรือ

$ find srch_dir -amin -60 # access time

แสดงไฟล์ที่สร้างแก้ไขหรือเข้าถึงในชั่วโมงที่แล้ว

การแก้ไข: ctime ใช้สำหรับเปลี่ยนเวลาโหนด (ไม่แน่ใจโปรดแก้ไขด้วย)


2
นี่ยอดเยี่ยมมาก แต่แฟล็กเหล่านี้ไม่มีใน Solaris findที่ฉันใช้ OP กล่าวว่า Unix และฉันคิดว่านี่คือ Linux เท่านั้น
jiggy

13
เคล็ดลับคือใช้ค่าเวลาติดลบ ! มันไม่ชัดเจนนักในหน้าคน
sphakka

คำตอบของ @jiggy Ayushให้แฮ็ค (อิง-newer) ที่ควรใช้กับ Solaris
David Moles

3
-cmin ไม่ใช่เวลาสร้าง แต่เปลี่ยนเวลา! เพิ่งลบสาเหตุ. config dir ของฉันในการทดสอบการทำงานมันไม่ได้เปลี่ยนไปใน X นาทีสุดท้ายและเมื่อฉันทำ rm มันคือ .... ดังนั้นอาจแก้ไขสิ่งนี้ ... !
Badmaster

ฉันยังคงคิดว่าความคิดเห็นตัวอย่างแรกต้องมีการแก้ไข "เปลี่ยนเวลา" คือสถานะไฟล์ไม่ใช่ข้อมูลไฟล์
KC Baltz

24

ระบบไฟล์ UNIX (โดยทั่วไป) ไม่เก็บเวลาสร้าง แต่จะมีเพียงเวลาเข้าถึง (ข้อมูล) เวลาแก้ไขและเวลาเปลี่ยน (inode)

ที่ถูกกล่าวว่าfindมีเพรดิเคต-atime -mtime -ctime:

$ man 1 หา
...
-ctime   n
        หลักจะประเมินตามความเป็นจริงหากเวลาของการเปลี่ยนแปลงล่าสุดของ
        ข้อมูลสถานะไฟล์ลบออกจากเวลาเริ่มต้น
        หารด้วย 86400 (โดยทิ้งส่วนที่เหลือ) เป็น n
...

ดังนั้นจึงfind -ctime 0พบทุกสิ่งที่ไอโหนดมีการเปลี่ยนแปลง (เช่นรวมถึงการสร้างไฟล์ แต่ยังนับจำนวนลิงก์และสิทธิ์และการเปลี่ยนแปลงขนาดไฟล์) น้อยกว่าหนึ่งชั่วโมงที่ผ่านมา


86400 วินาทีต่อวันไม่ใช่ชั่วโมง ดังนั้นอาร์กิวเมนต์ถึง-ctimeetc จึงมีหน่วยเป็นวันแทนที่จะเป็นชั่วโมง
Gaylon

11

ลองดูลิงค์นี้แล้วช่วยตัวเอง

รหัสพื้นฐานคือ

#create a temp. file
echo "hi " >  t.tmp
# set the file time to 2 hours ago
touch -t 200405121120  t.tmp 
# then check for files
find /admin//dump -type f  -newer t.tmp -print -exec ls -lt {} \; | pg

ขอบคุณอย่างไรก็ตามสิ่งนี้จะค้นหาเฉพาะ t.tmp จะเป็นอย่างไรถ้าฉันต้องการค้นหาไฟล์ทั้งหมดที่สร้างขึ้นในชั่วโมงที่แล้ว
Ankur

2
Ankur: มันจะสร้างไฟล์ชั่วคราว t.tmp และตั้งเวลาสร้างเป็น 2 ชั่วโมงที่แล้ว ... หลังจากนั้นจะค้นหาในไดเร็กทอรีปัจจุบันไฟล์ทั้งหมดที่สร้างขึ้นหลังจาก t.tmp เช่นใน 2 ชั่วโมงที่ผ่านมา ..
ayush

4
เย็น!! แม้ว่าคำสั่งแรกจะไม่จำเป็น touchสร้างไฟล์หากยังไม่มีอยู่
Amir Uval


3
sudo find / -Bmin 60

จากmanหน้า:

-Bmin n

จริงถ้าความแตกต่างระหว่างเวลาของการสร้างไอโหนดของไฟล์และเวลาที่findเริ่มต้นปัดขึ้นเป็นนาทีเต็มถัดไปเป็น n นาที

เห็นได้ชัดว่าคุณอาจต้องการตั้งค่าที่แตกต่างกันเล็กน้อย แต่หลักนี้ดูเหมือนจะเป็นทางออกที่ดีที่สุดสำหรับการค้นหาไฟล์ใด ๆ ที่สร้างขึ้นในช่วงNนาทีที่ผ่านมา


find (GNU findutils) 4.6.0ไม่ได้มี-Bคำกริยา
blockloop

-1

ตรวจสอบลิงค์นี้เพื่อดูรายละเอียดเพิ่มเติม

หากต้องการค้นหาไฟล์ที่สร้างขึ้นในหนึ่งชั่วโมงที่ผ่านมาในไดเร็กทอรีปัจจุบันคุณสามารถใช้ -amin

หา. -amin -60- ประเภทฉ

จะพบไฟล์ที่สร้างขึ้นใน 1 ชั่วโมงที่ผ่านมา


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