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
|
||||
|
||||
find "$@" -type f -printf "%s %p\n" | while read ab; do
|
||||
sum="$(printf %8.8x "${ab%% *}")"
|
||||
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}" != "40" ]; then
|
||||
if [ "${#sum}" != "48" ]; then
|
||||
echo "ERROR : $sum $nom" >&2
|
||||
sum="0000000000000000000000000000000000000000"
|
||||
fi
|
||||
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