#1 Le 27/11/2012, à 02:32
- Epheo
[Bash] Récursivité lors d'un traitement de fichier
Bonjour,
Afin d'organiser et d'améliorer l'esthétique de ma prise de note, j'ai eu comme idée de convertir mes fichiers txt en html via le paquet txt2html
Mon but est donc de créer une copies de mes notes (pleins de fichiers textes dans pleins de dossiers et sous dossier) en html
#!/bin/bash
for i in *
do
txt2html ./notes_txt/"$i" > ./notes_html/"$i".html
done
Voilà qui fonctionne mais ne prend pas en compte les dossiers.
J'ai donc cherché du côté de find.
find ./notes_txt/ -type f -name "fichier" -exec txt2html \{} \; > ./notes_html/fichier.html
Mais je ne vois toujours pas comment reconstituer l'arborescence des dossiers.
Si quelqu'un ici peut m'éclairer.
Merci
Thibaut Lapierre http://blog.epheo.eu
Hors ligne
#2 Le 27/11/2012, à 04:18
- Watael
Re : [Bash] Récursivité lors d'un traitement de fichier
salut,
avec bash, utiliser l'option globstar pour descendre dans les sous-répertoires
#!/bin/bash
shopt -s globstar nullglob
racine="$HOME"
orig="notes_txt"
html="notes_html"
for f in "$racine/$orig"/**/*
do
echo txt2html "$f" > "$racine/$html/${f##*/}"
done
si c'est bon, enlève le echo pour exécuter la commande txt2html.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 27/11/2012, à 04:19
- nesthib
Re : [Bash] Récursivité lors d'un traitement de fichier
while read file
do
txt2html "${file}" >"${file/txt/html}.html"
done < <(find ./notes_txt/ -type f -name "fichier")
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#4 Le 28/11/2012, à 11:02
- Epheo
Re : [Bash] Récursivité lors d'un traitement de fichier
Bonjour et merci pour vos reponses.
@Watael
Merci, j'ai cherché un peu plsu d'infos sur globstar, c'est vrais que ça manquait à Bash.
http://brizzled.clapper.org/blog/2012/0 … ered-cool/
Peu-tu me donner un peu plus d'info sur ${f##*/} ?
merci nesthib, est-ce que ${file/txt/html} remplace le mot txt par html dans le path du fichier? Comme un sed?
Mon problème n'était pas vraiment de lire les fichiers avec la récursivité mais de recréer l'arborescence des dossiers dans le dossier 'notes_html'
Je vais continuer à chercher. Pour le moment j'ai mis ça en attendant de trouver une autre solution.
#!/bin/bash
rm -r ~/notes_html/
cp -r ~/notes_txt ~/notes_html
while read file
do
txt2html "${file}" >"${file}.html"
rm "${file}"
done < <(find ./notes_html/ -type f -name "*")
Dernière modification par Epheo (Le 28/11/2012, à 11:06)
Thibaut Lapierre http://blog.epheo.eu
Hors ligne