575 liens privés
Un cours bien pédagogique pour aborder les regex.
learn-regex - Learn regex the easy way
Oh putain !
Je sais, je vais passer pour un noob mais tampis ! J'ai cherché trop longtemps à comprendre comment faire simplement que je ne vais pas laisser tomber aux oubliettes de ma mémorie cette astuce.
Je veux tout simplement 1/récupérer la liste des fichiers de mon répertoire et 2/ajouter une balise [img]...[/img] autour du nom.
Je le fais en 3 étapes :
ls > list.txt
sed 's/^/[img]/' list.txt > list2.txt
sed 's/$/[\/img]/' list2.txt > list3.txt
A savoir que pour la commande sed le "s" signifie "substituer" le "^" étant la regex du début du de ligne et le "$" celle de fin de ligne. La troisième partie du '.../.../[img]/ étant le texte que l'on veut ajouter. Puis ensuite on sort tout ça dans un nouveau fichier.
Il y a très certainement moyen d'optimiser en 2 lignes voire 1 mais pour le moment je m'arrête là.
Edit 2015-05-18T19:37 : Merci à Stuper https://stuper.info/shaarli//?3mSpBg qui me propose ça :
ls | awk -F " " '{print "[img]"$0"[/img]"}' > list3.txt
Je note l'utilisation des pipes. J'y ai pensé mais je ne suis pas encore à l'aise. Et "awk", j'en ai entendu parlé ; genre c'est un peu le "couteau-suisse" (mais bon, un couteau, ça coupe...).
Et merci à Oros https://www.ecirtam.net/links/?ra2mcw également qui propose quelque chose qui me convient mieux au premier abord :
ls | sed 's/^/[img]/' | sed 's/$/[\/img]/' > list.txt
Pour lister tous les fichiers existants dans le répertoire courant :
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
# do something
et au complet avec un regex (simple) pour le type de fichier :
import os
import re
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
if re.match('.*\.xls',f):
# do something
[A défaut de prendre le temps d'écrire sur mon blog, j'écris mon retour ici]
J'ai récemment dû dépanner un ami pour qui la carte µ-SD de 64Go dans son téléphone ne "répondait" plus. Impossible de la lire sous Windows XP, Linux Mint, son GS4, mon Cink Peax. Rien ne la reconnaissait. Il y avait bien un périphérique mais impossible de lire et toujours une proposition de le formater. Bah non : y'avait toutes ses photos persos, des films, des documents, ...
Je me suis donc souvenu de TestDisk : http://sebsauvage.net/links/?BzxyBg
J'ai tenté dans tous les sens de reconstruire la table de répartition, de changer la taille des blocs, etc. Bref, j'ai tourné le problème dans tous les sens mais je n'ai jamais réussi à ce que sa carte SD soit fonctionnelle comme avant.
En dernier recours, j'ai utilisé PhotoRec. Celui-ci a récupéré tous les fichiers de la SD. Tous sans exception (même les fichiers NSFW :-P ).
Ouf ! Ses fichiers étaient sauvés.
Malheureusement, tout est groupé dans des sous-dossiers <recup_dir.1>
, <recup_dir.2>
, ... Bref, y'en avait 44. Et tout possède des noms tels que f84553728.txt
, f84600576.mp4
. Pas très pratique...
Avec UltraSearch*
et une regex**
, j'ai pu récupérer ses photos en speed avant Noël.
Ensuite avec WinDirStat***
, on a fait du ménage pour effacer ses *.mp4
, *.avi
de séries/films de vacances. (Je rappelle que tout est fonctionnel, juste le nom et l'emplacement du fichier qui sont inexploitables). On est arrivé à une taille raisonnable, genre 9Go de tout ce qui n'était ni des photos, ni des MP3, ni des "films de vacances".
Mais ayant utilisé UltraSearch, il me fallait nettoyer tous les sous-dossiers pour retirer les *.jpg
déjà récupérés et les *.mp3
dont la récupération et le renommage ( avec MusicBrainz : http://orangina-rouge.org/shaarli/?QXJaYQ bien évidemment ) ont été jugés inutiles.
Hop, une tite ligne de batch :
for /l %%t in (1, 1, 44) do del /s/q .\recup_dir.%%t*.jpg
et tout était nettoyé.
Bref.
J'en profite pour remercier tout le monde qui a permis cela. Internet c'est génial et j'ai là senti l'application concrète des multiples échanges que nous permettent ce réseau. J'ai vraiment sorti quelqu'un de la merde, ça m'a pris du temps mais sans ça j'aurais connu quelqu'un qui aurait fait un "Formater...>Tout" en pleurant sur toutes ses photos depuis 5 ans...
Maintenant, allez-vous faire plaisir par ici pour agrémenter votre journée : http://orangina-rouge.org/shaarli/?searchtags=citation
*
: UltraSearch : http://alternativeto.net/software/ultrasearch/
**
: quelques idées de regex : http://orangina-rouge.org/shaarli/?searchterm=regex
***
: WinDirStat : http://alternativeto.net/software/windirstat/
Edit : NB : mis à part UltraSearch qui aurait pu être remplaçable, et Windows+Batch, tout cela n'a été fait qu'avec des Logiciels Libre ! ! ! :-D
Je viens de tester XMLQuire (http://qutoric.com/xmlquire/ )selon les bons conseils de Bajazet (http://bajazet.fr/shaarli/?SSHBog), et je dois dire qu'il est très prometteur (présentation du fichier, parcours de l'arbre, requete regex/XPath, ...)
.
Seul soucis visible : consommation de mémoire phénoménale alors que XMLSpy en utilise 6 fois moins pour a peu près les mêmes fonctionnalités.
Je vais lui faire passer un petit test d'endurance mais je crois que XMLSpy est dure à détrôner.
Merci Bajazet !
Je regarde de suite ton lien sur XML Quire.
Utilisant le XML quotidiennement dans mon milieu professionnel et surtout n'étant pas le seul, autant dire que cet outil va passer sérieusement à la moulinette.
Pour l'instant on n'a pas trouvé mieux que XMLSpy !
Une assistance pour débugger une regex récalcitrante.
On ne le dira jamais assez, une regex réussi c'est une journée de gagnée !
Utilisant régulièrement le XPath, ça serait cool de voir fleurir un outil du même type un jour.
Ca peut toujours servir. Les regex dans npp.
Toujours un peu dur à appréhender mais c'est tellement pratique !