Rewrote some tools in python, so they are safer, and work faster.
This commit is contained in:
parent
ddd3cd2421
commit
56c735c248
35
dotpercent-dirs.py
Executable file
35
dotpercent-dirs.py
Executable file
|
@ -0,0 +1,35 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def walk(path):
|
||||||
|
#print >> sys.stderr, path
|
||||||
|
emptydir = True
|
||||||
|
for f in os.listdir(path):
|
||||||
|
fpath = os.path.join(path, f)
|
||||||
|
if (not os.path.islink(fpath)) and f[0:2] != ".%":
|
||||||
|
if os.path.isfile(fpath):
|
||||||
|
emptydir = False
|
||||||
|
if os.path.isdir(fpath):
|
||||||
|
emptysubdir = walk(fpath)
|
||||||
|
emptydir = emptydir and emptysubdir
|
||||||
|
if emptysubdir:
|
||||||
|
dest = os.path.join(path, ".%%%s" % f)
|
||||||
|
if not os.path.exists(dest):
|
||||||
|
print "mv -i '%s' '%s'" % (fpath.replace("'", "'\\''"), dest.replace("'", "'\\''"))
|
||||||
|
os.rename(fpath, dest)
|
||||||
|
return emptydir
|
||||||
|
|
||||||
|
def help():
|
||||||
|
print 'Usage : %s directory' % sys.argv[0]
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if len(sys.argv) != 2:
|
||||||
|
help()
|
||||||
|
for arg in sys.argv[1:]:
|
||||||
|
if arg == '-h' or arg == '--help':
|
||||||
|
help()
|
||||||
|
|
||||||
|
print "#!/bin/sh"
|
||||||
|
walk(sys.argv[1])
|
|
@ -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 .
|
|
31
unhide-dotpercent.py
Executable file
31
unhide-dotpercent.py
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def walk(path):
|
||||||
|
#print >> sys.stderr, path
|
||||||
|
for f in os.listdir(path):
|
||||||
|
fpath = os.path.join(path, f)
|
||||||
|
if f[0:2] == ".%":
|
||||||
|
ff = f
|
||||||
|
while ff[0:2] == ".%":
|
||||||
|
ff = ff[2:]
|
||||||
|
dest = os.path.join(path, ff)
|
||||||
|
if not os.path.exists(dest):
|
||||||
|
print "i-have-moved -i '%s' '%s'" % (fpath.replace("'", "'\\''"), dest.replace("'", "'\\''"))
|
||||||
|
os.rename(fpath, dest)
|
||||||
|
if os.path.isdir(fpath) and not os.path.islink(fpath):
|
||||||
|
walk(fpath)
|
||||||
|
def help():
|
||||||
|
print 'Usage : %s directory' % sys.argv[0]
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if len(sys.argv) != 2:
|
||||||
|
help()
|
||||||
|
for arg in sys.argv[1:]:
|
||||||
|
if arg == '-h' or arg == '--help':
|
||||||
|
help()
|
||||||
|
|
||||||
|
print "#!/bin/sh"
|
||||||
|
walk(sys.argv[1])
|
|
@ -59,7 +59,7 @@ def update(connection,cursor,path):
|
||||||
cursor.execute("insert or replace into files(tag,timestamp,path,md5,sha1,mtime,size) values(?,?,?,?,?,?,?)", values)
|
cursor.execute("insert or replace into files(tag,timestamp,path,md5,sha1,mtime,size) values(?,?,?,?,?,?,?)", values)
|
||||||
|
|
||||||
currentTime = time.clock()
|
currentTime = time.clock()
|
||||||
if abs(lastTime-currentTime) >= 0.1:
|
if abs(lastTime-currentTime) >= 10:
|
||||||
lastTime = currentTime
|
lastTime = currentTime
|
||||||
connection.commit()
|
connection.commit()
|
||||||
print "commit!"
|
print "commit!"
|
||||||
|
@ -82,7 +82,7 @@ def help():
|
||||||
print 'Usage : %s database-file directory' % sys.argv[0]
|
print 'Usage : %s database-file directory' % sys.argv[0]
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if len(sys.argv) < 3:
|
if len(sys.argv) != 3:
|
||||||
help()
|
help()
|
||||||
for arg in sys.argv[1:]:
|
for arg in sys.argv[1:]:
|
||||||
if arg == '-h' or arg == '--help':
|
if arg == '-h' or arg == '--help':
|
||||||
|
|
|
@ -21,5 +21,5 @@ select (select path from files where rowid == hashesother.id) from hashesother w
|
||||||
select (select path from files where rowid == hashesother.id),(select (select path from files where rowid == hashesA.id) from hashesA where hashesA.hash == hashesother.hash) from hashesother where hashesother.hash in (select hash from hashesA);
|
select (select path from files where rowid == hashesother.id),(select (select path from files where rowid == hashesA.id) from hashesA where hashesA.hash == hashesother.hash) from hashesother where hashesother.hash in (select hash from hashesA);
|
||||||
|
|
||||||
# Rename (prepend ".% to file name) files not in folder A which have a duplicate in folder A.
|
# Rename (prepend ".% to file name) files not in folder A which have a duplicate in folder A.
|
||||||
[ -e hashes.db ] && sqlite3 hashes.db "select (select path from files where rowid == hashesother.id) from hashesother where hashesother.hash in (select hash from hashesA);" > dup.lst
|
[ -e hashes.db ] && sqlite3 hashes.db "select (select path from files where rowid == hashesother.id) from hashesother where hashesother.hash in (select hash from hashesA);" | sort > dup.lst
|
||||||
pv -l dup.lst | while read ab; do file="${ab##*/}"; dir="${ab%/*}"; dest="${dir}/.%${file}"; if [ -e "$ab" ]; then [ "$file" != "${file#.%}" ] || [ -e "$dest" ] || mv -i -- "$ab" "$dest"; fi; done
|
pv -l dup.lst | while read ab; do file="${ab##*/}"; dir="${ab%/*}"; dest="${dir}/.%${file}"; if [ -e "$ab" ]; then [ "$file" != "${file#.%}" ] || [ -e "$dest" ] || mv -i -- "$ab" "$dest"; fi; done
|
||||||
|
|
Loading…
Reference in New Issue
Block a user