รายการไฟล์ในไดเรกทอรีเฉพาะที่เก่ากว่า 1 วันหรือ 24 ชั่วโมง


2

ฉันพยายามเขียนสคริปต์สำรองอย่างง่ายใน python ที่ฉันพยายามแสดงรายการไฟล์ที่มีอายุ 24 ชั่วโมงในไดเรกทอรีเฉพาะที่ฉันจะเลือก

ฉันอ่านคู่มือการค้นหาและใช้

หา - ครั้งที่ 1 & gt; log.dat

เพื่อรับรายชื่อของไฟล์ใน log.dat แต่ฉันยังได้รับข้อมูลเส้นทางในรายการนั้นเช่นกัน

./hpc06MatlabCodes/2011/Apr/3dBoxModel
./hpc06MatlabCodes/2011/Apr/3dBoxModel/vfluidIrca10.dat ./hpc06MatlabCodes/2011/Apr/3dBoxModel/vLRecoveredSystem.mat

มีวิธีการแยกไดเรกทอรีและได้รับรายชื่อไฟล์เท่านั้น Greetz, Umut

คำตอบ:


1

เพิ่มแฟล็ก '-type f' เพื่อค้นหา:

$ find . -type f -a -mtime 1 > log.dat

(คน -a คือ 'และ' - เป็นค่าเชื่อมต่อเริ่มต้น แต่ฉันต้องการระบุในกรณีที่การเปลี่ยนแปลงเริ่มต้นในบางจุดในอนาคต)


1

เนื่องจากคุณทำสิ่งนี้เป็นไพ ธ อนฉันจะใช้:

def get_old_files(topdir, howold=24*3600):
    import os, time
    now = time.time()
    filelist = []
    def traverse_links(filename):
        if not os.path.islink(filename):
            return filename
        return traverse_links(os.path.normpath(
                    os.path.join(os.path.dirname(filename), os.readlink(filename)))))
    for dirpath, dirnames, filenames in os.walk(topdir):
        for name in [traverse_links(os.path.join(dirpath, f)) for f in filenames]:
            try:
                if os.path.isfile(name) and now - os.path.getmtime(name) > howold:
                    filelist.append(name)
            except OSError:
                pass # ignore bad symlinks
    return filelist

สิ่งนี้ควรทำในสิ่งที่คุณต้องการคุณสามารถเพิ่มอาร์กิวเมนต์ที่เป็นตัวเลือกซึ่งจะกำจัดไดเรกทอรี ข้อดีของการใช้สิ่งนี้มากกว่าการโทร find เป็นค่าใช้จ่ายพิเศษที่เกี่ยวข้องกับการวางไข่กระบวนการใหม่เมื่อเทียบกับการทำทุกอย่างในกระบวนการ


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