Salut,
Moi j'utiliserai la fonction de substitution intégrée à Bash:
${var/Pattern/Replacement}
First match of Pattern, within var replaced with Replacement.
If Replacement is omitted, then the first match of Pattern is
replaced by nothing, that is, deleted.
trouvé sur
http://www.tldp.org/LDP/abs/html/parameter-substitution.html
J'ai testé, ça marche même avec une variable à la place de Pattern
Gabriel
On 25/02/2016 22:41, anne.guilde@??? wrote:
> bonjour,
>
> Je veux trouver tous les fichiers normaux d'un répertoire et de ses
> sous-répertoire
>
> # répertoire de recherche
> /home/anne/toto/
>
> avec la commande find je me retouve avec
>
> /home/anne/toto/fich1
> /home/anne/toto/fich2
> /home/anne/toto/fich3
> /home/anne/toto/rep1/fich4
> /home/anne/toto/rep1/fich5
> /home/anne/toto/rep2/fich6
> /home/anne/toto/rep3/fich7
>
> J'ai un répertoire /home/anne/titi/
>
> Je veux vérifier si tous les fichiers qui sont dans toto existe dans
> titi et ont le même contenu
>
> J'ai fait un petit script bash
>
> -----
> #!/bin/bash
>
> # repertoire recherche
> repertdiff='/home/anne/resupt-rech/'
> # repertoire old
> listeold=( $(find /home/anne/toto -type f) )
> # repertoire new
> listenew='/home/anne/titi/'
>
> nb_element=${#listeold[@]}
>
> index=0
>
> while [ "$index" -lt "$nb_element" ]
> do # Liste tous les elements du tableau.
> echo ${listeold[$index]}
> # recherche du nom du fichier
> nomfich=$(basename ${listeold[$index]} )
> echo $nomfich
> # nom fichier avec le repertoire titi
> fichnew="$listenew$nomfich"
> echo $fichnew
> # nom de fichier pour la recherche du diff
> fichrech="$repertdiff$nomfich"
> # diff
> diff ${listeold[$index]} $fichnew > $fichrech
> let "index = $index + 1"
> # ou index+=1 avec Bash 3.1 et suivants
> done
> -----
>
> Je me suis servie de basename pour récupérer le nom du fichier.
> Je n'avais pas pensé aux sous-répertoires quand j'ai pondu mon script.
>
> avec '/home/anne/toto/rep1/fich4' Comment faire pour récupérer
> 'rep1/fich4'
>
> avec '/home/anne/toto/rep1/rep11/fich41' Comment faire pour récupérer
> 'rep1/rep11/fich41'
>
> avec basename je me retrouve avec fich4 sans son répertoire
>
> répertoire de base /home/anne/toto/
> il faut que je récupère tout ce qui est après le nom du répertoire de base.
>
> merci pour vos lumières
> Anne
>