summaryrefslogtreecommitdiff
path: root/dupfiles
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2010-12-22 09:04:38 +0000
committerLars Wirzenius <liw@liw.fi>2010-12-22 09:04:38 +0000
commit9a0b263b7fc9d43e6acd16729ebfc2120ae501d6 (patch)
tree867662e876c2c77ca123cc708527819bce6ce634 /dupfiles
parente6657c0fe65e4c99e948fa9b38a94499ff2a1af8 (diff)
downloaddupfiles-9a0b263b7fc9d43e6acd16729ebfc2120ae501d6.tar.gz
Add --remove option.
Diffstat (limited to 'dupfiles')
-rwxr-xr-xdupfiles10
1 files changed, 10 insertions, 0 deletions
diff --git a/dupfiles b/dupfiles
index 8c06c3d..3d9e8db 100755
--- a/dupfiles
+++ b/dupfiles
@@ -197,6 +197,12 @@ def make_hardlinks(duplicates):
os.link(canonical, pathname)
+def remove_all_but_one(duplicates):
+ keep = duplicates.pop()
+ for pathname in duplicates:
+ os.remove(pathname)
+
+
def report(duplicates):
sys.stdout.write('\n'.join(duplicates))
sys.stdout.write('\n\n')
@@ -208,6 +214,8 @@ def main():
help='hardlink duplicate files to each other')
parser.add_option('--progress', action='store_true',
help='report progress')
+ parser.add_option('--remove', action='store_true',
+ help='remove all but one copy of identical files')
opts, args = parser.parse_args()
@@ -218,6 +226,8 @@ def main():
for duplicates in dupfinder.duplicates():
if opts.make_hardlinks:
make_hardlinks(duplicates)
+ elif opts.remove:
+ remove_all_but_one(duplicates)
else:
report(duplicates)