diff --git a/README b/README index a16d1d2..68c0a68 100644 --- a/README +++ b/README @@ -1,7 +1,3 @@ Attention ! Lisez le code source des scripts avant de les utiliser ! Normalement aucun d'eux ne supprime de fichiers sans une forte confirmation, mais on ne sait jamais... - -De plus, il est possible (en cas de collision de somme de contrôle) que remdoubles ne détecte pas certains doublons (mais il ne fera PAS de faux positifs, il utilise diff pour vérifier que les deux fichiers sont bien identiques avant de signaler un doublon). - -Pour ce qui est de showunique, il est possible qu'il ne signale pas certains fichiers qui n'ont pourtant pas de doublons (en cas de collision de somme de contrôle). Ne lui faites donc pas confiance, il est possible qu'il n'ait pas repéré certains fichiers non doublons. diff --git a/fast-remdoubles.py b/fast-remdoubles.py deleted file mode 100755 index 4c5a00b..0000000 --- a/fast-remdoubles.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/python - -import sys -import os -import errno -import shutil - -def identicalFiles(pathA, pathB): - bufsize = 4096 - with open(pathA, 'rb') as a: - with open(pathB, 'rb') as b: - while True: - dataA = a.read(bufsize) - dataB = b.read(bufsize) - if dataA != dataB: - return False - if not dataA: - return True - -nblines=0 -for supprimable in sys.stdin: - nblines = (nblines+1)%10240 - if nblines == 0: - os.system("sync"); - original = sys.stdin.next() - supprimable = supprimable[0:-1] - original = original[0:-1] - if supprimable[0:2] == '1/' and os.path.exists(supprimable) and os.path.exists(original) and identicalFiles(original, supprimable): - destfile = "delete/" + supprimable - try: - os.makedirs(os.path.dirname(destfile)) - except OSError as e: - if e.errno == errno.EEXIST: - pass - else: - raise - shutil.move(supprimable, destfile); diff --git a/fast-syncdoubles.py b/fast-syncdoubles.py deleted file mode 100755 index a3ce6c7..0000000 --- a/fast-syncdoubles.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/python - -import sys -import os -import errno -import shutil - -def identicalFiles(pathA, pathB): - bufsize = 4096 - with open(pathA, 'rb') as a: - with open(pathB, 'rb') as b: - while True: - dataA = a.read(bufsize) - dataB = b.read(bufsize) - if dataA != dataB: - return False - if not dataA: - return True - -nblines=0 -for supprimable in sys.stdin: - nblines = (nblines+1)%10240 - if nblines == 0: - os.system("sync"); - original = sys.stdin.next() - supprimable = supprimable[0:-1] - original = original[0:-1] - if supprimable[0:2] == '1/' and os.path.exists(supprimable) and os.path.exists(original) and identicalFiles(original, supprimable): - destfile = "sync/" + original - if not os.path.exists(destfile): - try: - os.makedirs(os.path.dirname(destfile)) - except OSError as e: - if e.errno == errno.EEXIST: - pass - else: - raise - shutil.move(supprimable, destfile); diff --git a/hidedoubles.sh b/hidedoubles.sh deleted file mode 100755 index 6497090..0000000 --- a/hidedoubles.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash - -if [ -z "$1" -o "$1" == "--help" -o "$1" == "-h" ]; then - cat < /dev/null; then - qi="${i//\'/$q}" - echo "[ -e '$qi' ] && mv -i '$qi' '${qi%/*}/.%${qi##*/}' # '${orig//\'/$q}'" - fi - done - fi - - unset supprimable - orig="" - n=0 - fi - - if [ "${nom#$1}" != "$nom" ]; then - supprimable[n]="$nom" - n=$(($n+1)) - else - orig="$nom" - fi - - oldsum="$sum" -done diff --git a/pre-fast-remdoubles.py b/pre-fast-remdoubles.py deleted file mode 100755 index 4552370..0000000 --- a/pre-fast-remdoubles.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/python - -import sys -import os -import errno -import shutil - -oldhash = "" -original = [] -supprimable = [] -nblines=0 -for line in sys.stdin: - nblines = (nblines+1)%500 - if nblines == 0: - os.system("sync"); - hash = line[0:48] - file = line[50:-1] - if hash != oldhash: - for o,s in zip(original,supprimable): - sys.stdout.write(s+"\n"+o+"\0") - supprimable = [] - original = [] - if file[0:2] == '1/': # Delete files in the directory named 1 - supprimable.append(file) - else: - original.append(file) - - oldhash = hash diff --git a/pre-fast-remdoubles.py.sh b/pre-fast-remdoubles.py.sh deleted file mode 100755 index 5171223..0000000 --- a/pre-fast-remdoubles.py.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -./pre-fast-remdoubles.py | sort -z | tr '\0' '\n' diff --git a/pseudo-empty-dirs.sh b/pseudo-empty-dirs.sh deleted file mode 100755 index 54f7a46..0000000 --- a/pseudo-empty-dirs.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/zsh - -# masque les dossiers qui ne contiennent que des fichiers dont le nom est -# .%fichier, récursivement (les dossiers sont masqués en préfixant ".%" à -# leur nom, donc les dossiers ne contenant que des fichiers / dossiers -# masqués le seront eux aussi. -# Un dossier n'est pas masqué ssi il contient au moins un fichier -# (regular file) ou dossier non masqué. - -setopt dotglob - -dohide() { - local x pseudo_empty subdirs si - echo "[$1] $PWD" - cd "./$1" - pseudo_empty="1" - si=1 - subdirs=() - for x in *(N/); do - if [ "${x[0,2]}" != ".%" ]; then - subdirs[si]="$x" - si=$(($si+1)) - fi - done - while [ $si -gt 1 ]; do - si=$(($si-1)) - dohide "${subdirs[si]}" - done - for x in *(/,.NoN); do # N = pas d'erreur quand vide, oN = order none, / = dossiers, . = fichiers - if [ "${x[0,2]}" != ".%" ]; then - pseudo_empty="0" - break; - fi - done - cd .. - [ "$pseudo_empty" = "1" ] && [ "${1[0,2]}" != ".%" ] && mv -i -- "$1" ".%$1" -} - -dohide . diff --git a/quickhash b/quickhash deleted file mode 100755 index fa869f1..0000000 --- a/quickhash +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -find "$@" -type f -printf "%s %p\n" | while read ab; do - sum="$(printf %16.16x "${ab%% *}")" - nom="${ab#* }" - mdsum="$(dd if="$nom" bs=512 count=1 2>/dev/null | md5sum 2>/dev/null)" - mdsum="${mdsum%% *}" - sum="$sum$mdsum" - if [ "${#sum}" != "48" ]; then - echo "ERROR : $sum $nom" >&2 - sum="0000000000000000000000000000000000000000" - fi - echo "$sum $nom" -done diff --git a/quickhash.py b/quickhash.py deleted file mode 100755 index ee80402..0000000 --- a/quickhash.py +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/python - -import hashlib; -import sys; - -for size in sys.stdin: - file = sys.stdin.next() - print "%16.16x%s" % (int(size), hashlib.md5(open(file[:-1], 'r').read(512)).hexdigest()), - print " " + file, - -#!/bin/sh -# -#find "$@" -type f -printf "%s %p\n" | while read ab; do -# sum="$(printf %16.16x "${ab%% *}")" -# nom="${ab#* }" -# mdsum="$(dd if="$nom" bs=512 count=1 2>/dev/null | md5sum 2>/dev/null)" -# mdsum="${mdsum%% *}" -# sum="$sum$mdsum" -# if [ "${#sum}" != "48" ]; then -# echo "ERROR : $sum $nom" >&2 -# sum="0000000000000000000000000000000000000000" -# fi -# echo "$sum $nom" -#done diff --git a/quickhash.py.sh b/quickhash.py.sh deleted file mode 100755 index a677a7c..0000000 --- a/quickhash.py.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -find "$@" -type f -printf "%s\n%p\n" | ./quickhash.py diff --git a/remdoubles b/remdoubles deleted file mode 100755 index 3332cc9..0000000 --- a/remdoubles +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash - -if [ -z "$1" -o "$1" == "--help" -o "$1" == "-h" ]; then - cat < /dev/null; then - destdir="delete/${i%/*}" - [ -e "$destdir" ] || mkdir -p "$destdir" - mv -i "$i" "$destdir" - echo -n '.' - #echo "myrm '${i//\'/$q}'" - fi - done - fi - - unset supprimable - orig="" - n=0 - fi - - if [ "${nom#$1}" != "$nom" ]; then - supprimable[n]="$nom" - n=$(($n+1)) - else - orig="$nom" - fi - - oldsum="$sum" -done diff --git a/remdoubles-full.py b/remdoubles-full.py deleted file mode 100755 index 6e7be76..0000000 --- a/remdoubles-full.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/python - -import sys -import os -import errno -import shutil - -def identicalFiles(pathA, pathB): - bufsize = 4096 - with open(pathA, 'rb') as a: - with open(pathB, 'rb') as b: - while True: - dataA = a.read(bufsize) - dataB = b.read(bufsize) - if dataA != dataB: - return False - if not dataA: - return True - -oldhash = "" -original = [] -supprimable = [] -for line in sys.stdin: - hash = line[0:48] - file = line[50:-1] - if hash != oldhash: - if original != []: - for i in supprimable: - if os.path.exists(i): - for j in original: - if os.path.exists(i) and os.path.exists(j) and identicalFiles(j, i): - print i + " |||||||||| " + j - destfile = "delete/" + i - try: - os.makedirs(os.path.dirname(destfile)) - except OSError as e: - if e.errno == errno.EEXIST: - pass - else: - raise - shutil.move(i, destfile); - break - supprimable = [] - original = [] - if file[0:2] == '1/': # Delete files in the directory named 1 - supprimable.append(file) - else: - original.append(file) - - oldhash = hash diff --git a/remdoubles.py b/remdoubles.py deleted file mode 100755 index 84394c6..0000000 --- a/remdoubles.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/python - -import sys -import os -import errno -import shutil - -def identicalFiles(pathA, pathB): - bufsize = 4096 - with open(pathA, 'rb') as a: - with open(pathB, 'rb') as b: - while True: - dataA = a.read(bufsize) - dataB = b.read(bufsize) - if dataA != dataB: - return False - if not dataA: - return True - -oldhash = "" -original = "" -supprimable = [] -nblines=0 -for line in sys.stdin: - nblines = (nblines+1)%500 - if nblines == 0: - os.system("sync"); - hash = line[0:48] - file = line[50:-1] - if hash != oldhash: - if original != "": - for i in supprimable: - print i - if os.path.exists(i) and identicalFiles(original, i): - destfile = "delete/" + i - try: - os.makedirs(os.path.dirname(destfile)) - except OSError as e: - if e.errno == errno.EEXIST: - pass - else: - raise - shutil.move(i, destfile); - supprimable = [] - original = "" - if file[0:2] == 'd/': # Delete files in the directory named d - supprimable.append(file) - else: - if original == "" and os.path.exists(file): - original = file - - oldhash = hash diff --git a/showdoubles b/showdoubles deleted file mode 100755 index 744c06b..0000000 --- a/showdoubles +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -if [ "$1" == "--help" -o "$1" == "-h" ]; then - cat < /dev/null; then - if [ "$first" != "1" -a "$n" != 1 ]; then - echo - else - echo "$oldnom" >&2 - fi - first=0 - n=0 - fi - if [ "$n" == 1 ]; then - echo "'${oldnom//\'/$q}'" - fi - if [ "$n" != 0 ]; then - echo "'${nom//\'/$q}'" - fi - n="$((n+1))" - - oldsum="$sum" - oldnom="$nom" -done diff --git a/showunique b/showunique deleted file mode 100755 index 9a20834..0000000 --- a/showunique +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash - -if [ -z "$1" -o "$1" == "--help" -o "$1" == "-h" ]; then - cat < /dev/null; then - : - else - # Pas de clone à l'extérieur, on affiche. - echo "$i" - fi - done - else - # Pas de clone à l'extérieur, on affiche. - for i in "${supprimable[@]}"; do - echo "$i" - done - fi - - unset supprimable - orig="" - n=0 - fi - - if [ "${nom#$1}" != "$nom" ]; then - supprimable[n]="$nom" - n=$(($n+1)) - else - orig="$nom" - fi - - oldsum="$sum" -done diff --git a/unhide.py b/unhide.py deleted file mode 100755 index f93dcee..0000000 --- a/unhide.py +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/python - -import shutil; -import sys; - -for dir in sys.stdin: - file = sys.stdin.next() - if file[0:2] == ".%": - dir = dir[:-1] - file = file[:-1] - shutil.move(dir + '/' + file, dir + '/' + file[2:]) - print "", diff --git a/unhide.py.sh b/unhide.py.sh deleted file mode 100755 index e68610d..0000000 --- a/unhide.py.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -find "$@" -depth -name '.%*' -printf '%h\n%f\n' | ./unhide.py diff --git a/unhide.sh b/unhide.sh deleted file mode 100755 index f1b81d9..0000000 --- a/unhide.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -find "$@" -depth -name '.%*' | while read ab; do aa="${ab##*/}"; mv -i "$ab" "${ab%/*}/${aa#.%}"; echo -n .; done