commit 4b2f7373a75d941219d48df260e34af674d77ceb
parent 9a2cc358d13ada1b559c80f63831b0e448af2d5f
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Sat, 31 Mar 2012 21:27:51 +0200
Recovered the pseudo-empty-dirs.sh script from commit 6cf1a0cc35868da994da1d3033ea78f83bd87a30 .
Diffstat:
1 file changed, 39 insertions(+), 0 deletions(-)
diff --git a/pseudo-empty-dirs.sh b/pseudo-empty-dirs.sh
@@ -0,0 +1,39 @@
+#!/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 .