Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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