[shell] Copier des fichiers
Résolu
hiiimoo
-
hiiimoo -
hiiimoo -
Bonjour,
j'essai de faire ceci en script shell :
copier tous les fichier (seul les fichiers) du répertoire passer en paramètre (tout les niveaux de profondeur) dans le répertoire racine de l'utilisateur $HOME !
j'ai essayer de faire cela en une fonction récursive :
function seek() {
for fic in `ls $1`
do
if test -f $1/$fic
then cp $1/$fic $HOME/archive
fi
if test -d $1/$fic
then seek() $1/$fic
fi
done
}
seek()
et ça marche toujours pas !
j'essai de faire ceci en script shell :
copier tous les fichier (seul les fichiers) du répertoire passer en paramètre (tout les niveaux de profondeur) dans le répertoire racine de l'utilisateur $HOME !
j'ai essayer de faire cela en une fonction récursive :
function seek() {
for fic in `ls $1`
do
if test -f $1/$fic
then cp $1/$fic $HOME/archive
fi
if test -d $1/$fic
then seek() $1/$fic
fi
done
}
seek()
et ça marche toujours pas !
A voir également:
- [shell] Copier des fichiers
- Classic shell - Télécharger - Personnalisation
- Renommer des fichiers en masse - Guide
- Comment copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
- Fichiers epub - Guide
3 réponses
C'est beaucoup plus simple avec un find (notamment l'option -f) et un pipe ( | ) ou une boucle for. Dans ton cas je ferais plutôt un for pour pouvoir passer par une variable intermédiaire (que je noterai x). Dans l'idée, ça ressemble à un truc dans ce genre :
En toute rigueur tu es sensé contrôler au début du programme qu'un argument a bien été passé à ton script et le cas échéant, envoyer un message d'erreur...
Dans le cas général, il faut s'assurer que src et dst sont des répertoires (et pas un fichier régulier) et qu'ils existent (par exemple à l'aide d'un if [ -d $src ] ....)
Bonne chance
#!/bin/sh
$src=$1
$dst=${HOME}
for x in `find ${src} -type f`
do
cmd="cp $x ${dst}/`basename $x`"
echo "je vais lancer la commande suivante : $cmd"
${cmd}
done
En toute rigueur tu es sensé contrôler au début du programme qu'un argument a bien été passé à ton script et le cas échéant, envoyer un message d'erreur...
Dans le cas général, il faut s'assurer que src et dst sont des répertoires (et pas un fichier régulier) et qu'ils existent (par exemple à l'aide d'un if [ -d $src ] ....)
Bonne chance