Quelques scripts en plus (non documentés, attention !).
This commit is contained in:
parent
33de113af5
commit
eccfc292a1
69
hidedoubles.sh
Executable file
69
hidedoubles.sh
Executable file
|
@ -0,0 +1,69 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -z "$1" -o "$1" == "--help" -o "$1" == "-h" ]; then
|
||||||
|
cat <<EOF
|
||||||
|
Affiche les fichiers qui SONT des doublons, sous forme d'un script
|
||||||
|
permettant leur suppression.
|
||||||
|
Pour afficher les fichiers qui ne sont pas des doublons, utilisez
|
||||||
|
showunique.
|
||||||
|
|
||||||
|
Syntaxe : remdoubles dossier-où-chercher-les-doublons < md5sums
|
||||||
|
|
||||||
|
Exemple :
|
||||||
|
md5sums contient :
|
||||||
|
604c442629170d4bee5804b13e9a587f ./a/fichier_un
|
||||||
|
a3d0c4f97abec8c2ceaaf83020f00809 ./b/fichier_deux
|
||||||
|
a3d0c4f97abec8c2ceaaf83020f00809 ./b/fichier_trois
|
||||||
|
604c442629170d4bee5804b13e9a587f ./b/fichier_XYZ
|
||||||
|
Si on lance "remdoubles ./b/ < md5sums", il affichera
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo Si vous lancez ce script, il supprimera un grand nombre de fichiers dans ./b/ .
|
||||||
|
exit
|
||||||
|
|
||||||
|
rm './b/fichier_XYZ'
|
||||||
|
car il est dans ./b/, ET a un fichier identique ailleurs que
|
||||||
|
dans ./b/ .
|
||||||
|
Il n'affichera pas ./a/fichier_un car il n'est pas dans ./b/
|
||||||
|
Il n'affichera pas ./b/fichier_deux ni ./b/fichier_trois car
|
||||||
|
ils n'ont pas de doublons en dehors de ./b/ .
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "#!/bin/sh"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
oldsum=""
|
||||||
|
unset supprimable
|
||||||
|
n=0
|
||||||
|
orig=""
|
||||||
|
q="'\\''" # escaped quote.
|
||||||
|
#sort | \
|
||||||
|
while read ab; do
|
||||||
|
sum="${ab%% *}"
|
||||||
|
nom="${ab#* }"
|
||||||
|
if [ "$sum" != "$oldsum" ]; then
|
||||||
|
if [ -n "$orig" ]; then
|
||||||
|
for i in "${supprimable[@]}"; do
|
||||||
|
if true; then # diff -q "$orig" "$i" > /dev/null; then
|
||||||
|
qi="${i//\'/$q}"
|
||||||
|
echo "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
|
32
pseudo-empty-dirs.sh
Executable file
32
pseudo-empty-dirs.sh
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
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 *(N); do
|
||||||
|
if [ "${x[0,2]}" != ".%" ]; then
|
||||||
|
pseudo_empty="0"
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
cd ..
|
||||||
|
[ "$pseudo_empty" = "1" ] && [ "${1[0,2]}" != ".%" ] && mv -i -- "$1" ".%$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
dohide .
|
|
@ -1,12 +1,13 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
find "$@" -type f -printf "%s %p\n" | while read ab; do
|
find "$@" -type f -printf "%s %p\n" | while read ab; do
|
||||||
sum="$(printf %8.8x "${ab%% *}")"
|
sum="$(printf %16.16x "${ab%% *}")"
|
||||||
nom="${ab#* }"
|
nom="${ab#* }"
|
||||||
mdsum="$(dd if="$nom" bs=512 count=1 2>/dev/null | md5sum 2>/dev/null)"
|
mdsum="$(dd if="$nom" bs=512 count=1 2>/dev/null | md5sum 2>/dev/null)"
|
||||||
mdsum="${mdsum%% *}"
|
mdsum="${mdsum%% *}"
|
||||||
sum="$sum$mdsum"
|
sum="$sum$mdsum"
|
||||||
if [ "${#sum}" != "40" ]; then
|
if [ "${#sum}" != "48" ]; then
|
||||||
|
echo "ERROR : $sum $nom" >&2
|
||||||
sum="0000000000000000000000000000000000000000"
|
sum="0000000000000000000000000000000000000000"
|
||||||
fi
|
fi
|
||||||
echo "$sum $nom"
|
echo "$sum $nom"
|
||||||
|
|
24
quickhash.py
Executable file
24
quickhash.py
Executable file
|
@ -0,0 +1,24 @@
|
||||||
|
#!/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
|
3
quickhash.py.sh
Executable file
3
quickhash.py.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
find "$@" -type f -printf "%s\n%p\n" | ./quickhash.py
|
Loading…
Reference in New Issue
Block a user