Bash: cp/mv fichiers dans leur repertoires

Résolu
snow_frog Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

voilà mon problèmes:

Dans un script.sh
Je souhaiterai pouvoir copier un fichier dans son repertoire associé:

niveau/test> ll
niveau_loire_janv_01_std1_data/
niveau_loire_janv_01_day_results.txt
niveau_loire_janv_02_std1_data/
niveau_loire_janv_02_day_results.txt


donc ce que je souhaite, c'est pouvoir copier niveau_loire_janv_01_day_results.txt dans le repertoire niveau_loire_janv_01_std1_data/

j'ai bien un début de script, mais je bloque pour définir le repertoire de destination
#!/bin/bash

FORMAT="./*_day_results.txt"

for i in $FORMAT ; do

cp $i ${i%.*}_std1_data   # là commence mon problème pour définir le reprtoire de destination

echo "this file: $i  has been copied into 
done
exit


une idée ?

4 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    cp "${i}" "${i%day*}"std1_data

    3
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    [test]$ echo ${A}
    niveau_loire_janv_01_day_results.txt
    
    [test]$ echo ${A%day*}
    niveau_loire_janv_01_
    
    [test]$ echo ${A/\./_imported.}
    niveau_loire_janv_01_day_results_imported.txt
    
    [test]$ 

    ;-))
    2
  3. snow_frog Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   139
     
    merci!

    petite question bonus:

    pour copier le fichier dans le repertoire tout en le renomant:

    est-ce que ça, ça fonctionne ? (je n'ai pas de terminal pour tester sous la main)

    cp "${i}" "${i%day*}"std1_data/${i%.*}_imported.${i#*.}


    sinon comment obtenir:

    niveau/test> ll
    niveau_loire_janv_01_std1_data/
    niveau_loire_janv_01_day_results.txt
    niveau_loire_janv_02_std1_data/
    niveau_loire_janv_02_day_results.txt
    niveau/test> ./script.sh       # execution du script
    niveau/test> ll niveau_loire_janv_01_std1_data/
    niveau_loire_janv_01_day_results_imported.txt
    
    0
  4. snow_frog Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   139
     
    une fois de plus merci!

    ma solution en marcherai pas ?
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Si si ;-))

      [test]$ echo ${i%day*}"std1_data/${i%.*}_imported.${i#*.}"
      niveau_loire_janv_01_std1_data/niveau_loire_janv_01_day_results_imported.txt
      
      [test]$ echo ${i%day*}"std1_data/${i/\./_imported.}"
      niveau_loire_janv_01_std1_data/niveau_loire_janv_01_day_results_imported.txt
      
      [test]$
      0