Outils du site


Quelques commandes de gestion de fichiers (pense-bête)

Je place ici quelques commandes dont je me sers plutôt rarement :-)

Si vous souhaitez en discuter sur le fofo : c'est par là.

Cloner un dossier

Créer une copie conforme en préservant les droits et les liens.

Se placer dans le dossier parent du dossier à cloner.

rsync -arv --stats --progress original/ copie

Les options importantes sont -a (archive) et -r (récursion).
Le slash après original entraîne la copie de son arborescence dans copie et non copie/original.

Effacer des sous-dossiers en en préservant d'autres

Celle-ci m'a donné du fil à retordre. :-P

J'avais malencontreusement installé le wiki en incluant toutes les locales, ce qui est non seulement inutile mais consomme de l'espace…
J'ai donc voulu effacer tous les sous-dossiers autres que en et fr présents dans tous les dossiers lang (incude et plugins).

Se placer à la racine du dossier à purger.

find . -type d -wholename "*/lang/*" \( -not -name  "fr" -and -not -name "en" \) -exec rm -r {} +

L'option -type d indique de chercher des dossiers.
L'option -wholename permet de fournir le motif */lang pour trouver tous les dossier nommés lang
Les parenthèses sont échappées pour ne pas faire râler le shell.
Entre parenthèses, une fonction logique pour exclure les dossiers fr et en de la recherche.
On ne peut pas utiliser l'option -delete de find car les dossiers ne sont pas vides.
L'option -exec permet de lancer la commande rm -r (effacement récursif) sur le résultat de find, les accolades représentant la liste complète et le signe + lançant le traitement en parallèle. 8-)

La commande find est implémentée différemment sous GNU et BSD, concernant l'option -depth.
À tester… :-P

J'adore l'efficacité de cette ligne. :-D