Salut,
laborde stephane wrote:
> for fichier in "find . -name *.txt"
> do
> #traitements des fichiers...
> done
plusieur methodes:
find . -name \*.txt | while read fichier
do
# traitement
done
for fichier in $(find . -name \*.txt)
do
# traitement
done
find . -name \*.txt -exec montraitement {} \;
>
> ou qq chose comme ça mais la commande find n'est pas interprétée.
> La question est très simple, comment faire pour traiter aussi tous les
> sous-répertoires ?
>
>
> 2) Dans les traitements dont je parle plus haut, je voudrais extraire le
> nom du fichier sans extension et sans chemin. Je veux donc utiliser la
> commande basename mais je ne suis pas parvenu à l'utiliser
>
> #!/bin/bash
>
> for fichier in test/dossier1/*.txt
> do
> echo $fichier
> fichier2 ="basename $fichier .txt"
> done
find . -name \*.txt | while read fichier
do
echo $fichier
fichier2 =$(basename $fichier )
fichier2 =${fichier2%.*}
done
ou
find . -name \*.txt | while read fichier
do
echo $fichier
fichier2 =${$fichier##*/}
fichier2 =${fichier2%.*}
done
>
> Avec ce script, j'ai une erreur : ./test.sh: line 6: fichier2 : commande
> introuvable
> J'ai essayé diverses combinaisons de la ligne 6 (avec ou sans
> guillemets) mais sans succès pour l'instant.
si tu veux utiliser le resultat d'une commande utilise
$( commande )
ou
` commande ` - c'est le backquote et pas la doublequote-
- le double crotte n'execute pas les commande, mais expand juste les
parametres-
>
> Quelle est la bonne syntaxe dans ce cas ? La page de man de basename ne
> m'a pas aidé...
La c'est le man du bash qu'il faudrait lire a fond, basename y est pour
rien.
>
> Merci pour votre aide.
>
_________________________________
Linux mailing list
[email protected]
http://lists.parinux.org/mailman/listinfo/linux