URL: https://linuxfr.org/news/katal-catalogue-de-fichiers Title: Katal, catalogue de fichiers Authors: Xavier Faure Benoît Sibaud, ZeroHeure et Nils Ratusznik Date: 2015年10月25日T15:37:45+01:00 License: CC By-SA Tags: catalogue_de_fichiers et ligne_de_commande Score: 30 Katal est un [projet](https://github.com/suizokukan/katal) GPLv3/Python3/CLI/Linux-Windows : il permet de **créer un catalogue de fichiers** à partir de différentes sources, en **filtrant les fichiers** à récupérer, en les **renommant** à la volée; on peut alors **étiqueter** les fichiers obtenus. Le répertoire de destination contient les fichiers du catalogue, une base de données, un dossier .trash et un dossier pour les logs. J'ai l'habitude de placer dans le répertoire de destination le script katal.py; **ainsi, je déplace le catalogue en même temps que l'outil qui me permet de le gérer.** De l'aide est disponible dans le fichier README.md : voyez [ici](https://github.com/suizokukan/katal). Voyez aussi le résultat de `$ katal -h` . ---- [projet sur github](https://github.com/suizokukan/katal) [projet sur Pypi](https://pypi.python.org/pypi/Katal) ---- L'histoire ========== Un copain m'avait demandé de l'aider à classer des dizaines de milliers de photos tirées de milliers de répertoires différents, mélangées avec toutes sortes de fichiers (textes, vidéos); beaucoup de photos identiques portaient des noms différents. Je voulais obtenir un catalogue des fichiers : 1. qui avaient l'extension de fichiers image (.jpg, .tiff, ...) ; 2. qui avaient une taille supérieure à 2 Mo pour éliminer les vignettes ; 3. sans doublon (=aucun fichier ayant le même contenu qu'un autre) ; 4. avec la possibilité d'étiqueter (=avec des tags) les images ; 5. avec la possibilité de renommer les fichiers ; 6. avec des fichiers de logs verbeux pour garder la trace de mes essais et de mes erreurs ; 7. le tout sur Linux/Mac/Windows puisque je passais d'un ordinateur à l'autre. Installation ============ ```sh $ pip install katal ``` katal est en effet [hébergé sur Pypi](https://pypi.python.org/pypi/Katal). mais aussi : ```sh $ wget https://raw.githubusercontent.com/suizokukan/katal/master/katal/katal.py ``` ... puisque le projet Katal tient en un seul fichier, [katal.py](https://github.com/suizokukan/katal/blob/master/katal/katal.py), qui peut être placé dans le répertoire de destination. Utilisation =========== Créer le répertoire de destination, qui contiendra les fichiers du catalogue : ------------------------------------------------------------------------------ ```sh $ katal --new=destdir ``` ... et accepter de télécharger [le fichier de configuration par défaut](https://github.com/suizokukan/katal/blob/master/katal/katal.ini) qui sera placé dans le répertoire de destination (dans un sous répertoire nommé `.katal`) Placez-vous ensuite à l'intérieur du répertoire de destination. --------------------------------------------------------------- ```sh $ cd destdir ``` Vous pouvez voir ce que pense Katal de ce répertoire en tapant : ```sh $ katal --infos ``` À l'intérieur du répertoire de destination, modifier le fichier de configuration ./katal/katal.ini : ---------------------------------------------------------------------------------------------------- ### Changer la source, par exemple : ```ini [source] path : ~/masource/photos/ ``` Katal recherchera de manière **récursive** dans ce répertoire. ### Changer le nom des fichiers qui seront copiés dans le répertoire de destination, par exemple : ```ini [target] name of the target files : INTTIMESTAMP_SIZE__DATABASE_INDEX.SOURCE_EXTENSION2 ``` ... pour avoir des fichiers du type 1445584562_123__1.jpg (=timestamp du fichier source, taille du fichier source, index dans la base de données du répertoire de destination) ### Changer la fonction d'évaluation permettant de faire le tri entre les fichiers de la source, par exemple : #### ... si vous voulez les fichiers python du répertoire source : ```ini [source] eval : sieve1 [source.sieve1] name : .*\.py$ ``` #### ... si vous voulez les fichiers python du répertoire source faisant plus d'un mégaoctet : ```ini [source] eval : sieve1 [source.sieve1] name : .*\.py$ size :>1000000 ``` #### ... si vous voulez les fichiers python du répertoire source faisant plus d'un mégaoctet OU les .jpg : ```ini [source] eval : sieve1 or sieve2 [source.sieve1] name : .*\.py$ size :>1000000 [source.sieve2] name : .*\.jpg$ ``` Tester le fichier de configuration ./katal/katal.ini : ------------------------------------------------------ ```sh $ katal --select ``` Katal vous montre alors ce qui se passerait si vous acceptiez la copie de la source vers la destination. Par exemple : ``` + selected /home/suizokukan/projets/dysodos/dysodos.py (file selected #1) - discarded "/home/suizokukan/projets/dysodos/.git/description" : incompatibility with the sieves - discarded "/home/suizokukan/projets/dysodos/.git/info/exclude" : incompatibility with the sieves ``` [...] ``` o everything ok : no anomaly detected. See details above. o size of the selected file(s) : 3877 bytes o number of selected files (after discarding 36 file(s)) : 1, 2.70% of the source files. o required space : 3877 bytes; available space on disk : ~35.62 Go (35619852288 bytes) (ok) o e.g. ... "/home/suizokukan/projets/dysodos/dysodos.py" would be copied as "/home/suizokukan/projets/katal/target2/5474c904__0.py" . Do you want to add the selected files to the target dictionary (".") ? (y/N) ``` Si vous êtes d'accord, répondez oui en tapant 'y' + entrée : ------------------------------------------------------------ ``` ... (1/1) copying "/home/suizokukan/projets/dysodos/dysodos.py" to "/home/suizokukan/projets/katal/target2/5474c904__0.py" . = all files have been copied, let's update the database... = = ... database updated = ``` Katal affiche automatiquement le contenu du catalogue (ici, un seul fichier) : ``` = informations about the "." (path: "/home/suizokukan/projets/katal/target2") target directory = +--------------------+--------------------+------+--------------------+------------------+ | hashid/base64 | name | tags | source name | source date | +--------------------+--------------------+------+--------------------+------------------+ | [...]f8SfE3Tzc+UP0s= | [...]/5474c904__0.py | | [...]odos/dysodos.py | 2014年11月25日 19:23 | +--------------------+--------------------+------+--------------------+------------------+ ``` Vous pouvez à tout moment afficher ces informations sur le catalogue à l'aide de l'option -ti : ----------------------------------------------------------------------------------------------- ```sh $ katal -ti ``` (ti : target informations) ``` ======================================================= === Katal v.0.1.3 (launched at 2015年10月25日 17:19:06) === ======================================================= = target directory given as parameter : "." (path : "/home/suizokukan/projets/katal/target2") = no config file specified on the command line : let's search a config file in the current directory... * config file name : "/home/suizokukan/projets/katal/target2/.katal/katal.ini" (path : "/home/suizokukan/projets/katal/target2/.katal/katal.ini") ... config file found and read (ok) = source directory : "~/projets/dysodos" (path : "/home/suizokukan/projets/dysodos") = informations about the "." (path: "/home/suizokukan/projets/katal/target2") target directory = +--------------------+--------------------+------+--------------------+------------------+ | hashid/base64 | name | tags | source name | source date | +--------------------+--------------------+------+--------------------+------------------+ | [...]f8SfE3Tzc+UP0s= | [...]/5474c904__0.py | | [...]odos/dysodos.py | 2014年11月25日 19:23 | +--------------------+--------------------+------+--------------------+------------------+ === exit (stopped at 2015年10月25日 17:19; total duration time : 0:00:00.004414) === ``` Vous pouvez enfin étiqueter un ou plusieurs fichiers : ------------------------------------------------------ ### Si vous voulez ajouter le tag "mytag" aux fichiers Python : ```sh $ katal --addtag=mytag --to=*.py ``` ### Si vous voulez ajouter le tag "mytag" à un seul fichier : ```sh $ katal --addtag=mytag --to=5474c904__0.py ``` Vous pouvez aussi : ------------------- - supprimer toutes les étiquettes d'un ou plusieurs fichiers (--rmnotags) ; - supprimer un fichier ou plusieurs fichiers du catalogue (--targetkill) ; - supprimer les fichiers qui n'ont pas de tags (--rmnotags) ; - supprimer de la base de données les fichiers qui n'existent pas dans le répertoire de destination (--cleandbrm). Et d'autres choses encore, accessibles dans le fichier [README.md](https://github.com/suizokukan/katal) ou en consultant le résultat de `$ katal -h` . Et la suite ? ============= J'ai essayé d'écrire du code lisible par tous : pylint à 10, documentation abondante, commentaires et documentation en anglais... Je serais ravi de vos commentaires et de vos suggestions d'amélioration !

AltStyle によって変換されたページ (->オリジナル) /