Bidouillages sur les scripts, quelques-uns ré-écrits en Python (plus rapide).
This commit is contained in:
parent
eccfc292a1
commit
e6b27d3e85
|
@ -48,7 +48,7 @@ while read ab; do
|
||||||
for i in "${supprimable[@]}"; do
|
for i in "${supprimable[@]}"; do
|
||||||
if true; then # diff -q "$orig" "$i" > /dev/null; then
|
if true; then # diff -q "$orig" "$i" > /dev/null; then
|
||||||
qi="${i//\'/$q}"
|
qi="${i//\'/$q}"
|
||||||
echo "mv -i '$qi' '${qi%/*}/.%${qi##*/}' # '${orig//\'/$q}'"
|
echo "[ -e '$qi' ] && mv -i '$qi' '${qi%/*}/.%${qi##*/}' # '${orig//\'/$q}'"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
#!/bin/zsh
|
#!/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
|
setopt dotglob
|
||||||
|
|
||||||
dohide() {
|
dohide() {
|
||||||
|
@ -19,7 +26,7 @@ dohide() {
|
||||||
si=$(($si-1))
|
si=$(($si-1))
|
||||||
dohide "${subdirs[si]}"
|
dohide "${subdirs[si]}"
|
||||||
done
|
done
|
||||||
for x in *(N); do
|
for x in *(/,.NoN); do # N = pas d'erreur quand vide, oN = order none, / = dossiers, . = fichiers
|
||||||
if [ "${x[0,2]}" != ".%" ]; then
|
if [ "${x[0,2]}" != ".%" ]; then
|
||||||
pseudo_empty="0"
|
pseudo_empty="0"
|
||||||
break;
|
break;
|
||||||
|
|
11
remdoubles
11
remdoubles
|
@ -42,14 +42,19 @@ unset supprimable
|
||||||
n=0
|
n=0
|
||||||
orig=""
|
orig=""
|
||||||
q="'\\''" # escaped quote.
|
q="'\\''" # escaped quote.
|
||||||
sort | while read ab; do
|
#sort | \
|
||||||
|
while read ab; do
|
||||||
sum="${ab%% *}"
|
sum="${ab%% *}"
|
||||||
nom="${ab#* }"
|
nom="${ab#* }"
|
||||||
if [ "$sum" != "$oldsum" ]; then
|
if [ "$sum" != "$oldsum" ]; then
|
||||||
if [ -n "$orig" ]; then
|
if [ -n "$orig" ]; then
|
||||||
for i in "${supprimable[@]}"; do
|
for i in "${supprimable[@]}"; do
|
||||||
if diff -q "$orig" "$i" > /dev/null; then
|
if [ -e "$orig" ] && [ -e "$i" ] && cat "$i" | diff -q "$orig" - > /dev/null; then
|
||||||
echo "rm '${i//\'/$q}'"
|
destdir="delete/${i%/*}"
|
||||||
|
[ -e "$destdir" ] || mkdir -p "$destdir"
|
||||||
|
mv -i "$i" "$destdir"
|
||||||
|
echo -n '.'
|
||||||
|
#echo "myrm '${i//\'/$q}'"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
48
remdoubles.py
Executable file
48
remdoubles.py
Executable file
|
@ -0,0 +1,48 @@
|
||||||
|
#!/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:
|
||||||
|
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] == 'c/': # Delete files in the directory named c
|
||||||
|
supprimable.append(file)
|
||||||
|
else:
|
||||||
|
if original == "" and os.path.exists(file):
|
||||||
|
original = file
|
||||||
|
|
||||||
|
oldhash = hash
|
12
unhide.py
Executable file
12
unhide.py
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/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 "",
|
3
unhide.py.sh
Executable file
3
unhide.py.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
find "$@" -depth -name '.%*' -printf '%h\n%f\n' | ./unhide.py
|
Loading…
Reference in New Issue
Block a user