שיתוף | סקריפט קטן ופשוט למציאת קבצים כפולים בתוך תיקיה
-
אם כבר התחלתי להתעסק עם האשים אז הלכתי צעד קטן קדימה ובניתי סקריפט קטן בפייתון שעובר על כל הקבצים בתיקייה ומוצא קבצים כפולים
ארבע הערות:
א' הסקריפט לא בודק תתי - תיקיות
ב' הסקריפט יראה רק אחד מהקבצים הכפולים ולא את שניהם
ג' הסקריפט מיועד בעיקר לכאלו שרוצים ללמוד קצת פייתון - בשביל הפעולה הזאת קיימות כבר הרבה תוכנות מעולות (כולל אופציה נהדרת ב CCleaner)
ד' הסקריפט משווה את תוכן הקבצים ולא את השמות - כך שגם קבצים עם שמות שונים אבל תוכן זהה יזוהו אבל לא קבצים עם שם זהה ותוכן שונהimport hashlib import os def hashfile(file): os.chdir(dir_name) sha256 = hashlib.sha256() try: with open(file, 'rb') as f: while True: data = f.read(65536) if not data: break sha256.update(data) return sha256.hexdigest() except: pass list_of_hashs = [] duplicate_files = [] dir_name = input("enter full path : ") dir_name = dir_name.replace('"', "") for file in os.listdir(dir_name): current_hash = hashfile(file) if not current_hash in list_of_hashs: list_of_hashs.append(current_hash) else: duplicate_files.append(file) print(*duplicate_files, sep='\n')
-
@מתכנת-חובב ברוך שכיוונתי / כיוונת. אני בדיוק עובד על משהו כזה דרך באט, עם שימוש באסימונים של פקודת פור (המעלה בזה שהוא מוצא גם קבצים עם שמות דומים ולאו דוקא שמות זהים)
-
@מתכנת-חובב מדהים! אם ככה, זה עדיף על סי-קלינר שרק בודק גודל או שם של קובץ
ב. מה מהירות הסריקה של זה? -
@מתכנת-חובב למיטב ניסיוני עם התוכנה היא לא באמת בודקת תוכן
-
@מתכנת-חובב מוזר. הייתי מצפה ממנה למצוא הרבה יותר קבצים ממה שהיא מוצאת אצלי (ויש לי יסוד סביר להניח שיש במאגר שלי המון כאלו)
-
@NH-LOCAL כתב בשיתוף | סקריפט קטן ופשוט למציאת קבצים כפולים בתוך תיקיה:
ב. מה מהירות הסריקה של זה?
לא הכי מהיר בעולם
בדקתי עכשיו השוואה בין 2 קבצים בגודל 1.7 ג'יגה כל אחד ולקח 8 שניות (מחשב נייח i5 דור 9 וכונן NVMe מדור שלישי בלי כרטיס מסך) -
@מתכנת-חובב נחמד מאוד בהתחשב בגודל הקבצים, רוב הקבצים שוקלים הרבה פחות
-
@מתכנת-חובב איך משתמשים בזה? בסביבת עבודה של פייתון? Notepad++? משהו אחר?