Pythonを使ってフォルダ内の内容が全く同じファイルを削除する方法です。
まずすべてのファイルの中身を配列に入れます。
これを一つずつ比較しまして、既存のファイルと同じファイルは、削除用ファイルの配列に入れます。
最後に削除用ファイルの配列に入っているファイルを削除します。
import os
import glob
def main():
target_dir = './test'
files = glob.glob(target_dir + "/*")
files.sort()
contents = []
for fn in files:
with open(fn, "rb") as f:
contents.append(f.read())
files_del = []
for i in range(1, len(files)):
for j in range(0, i):
if contents[i] == contents[j]:
files_del.append(files[i])
break
for fn in files_del:
print("remove:", fn)
os.remove(fn)
if __name__ == '__main__':
main()
import glob
def main():
target_dir = './test'
files = glob.glob(target_dir + "/*")
files.sort()
contents = []
for fn in files:
with open(fn, "rb") as f:
contents.append(f.read())
files_del = []
for i in range(1, len(files)):
for j in range(0, i):
if contents[i] == contents[j]:
files_del.append(files[i])
break
for fn in files_del:
print("remove:", fn)
os.remove(fn)
if __name__ == '__main__':
main()
処理が遅い場合は、サイズで比較、ハッシュで比較などを組み合わせるといいと思います。
コメント