#1 Le 20/04/2025, à 10:51
- Piouky
Déplacer fichier dont les nom se trouve dans un fichier
Bonjour,
J'ai actuellement des noms de fichier qui se trouve dans un fichier nommé $verif
Je souhaite déplacer ces fichiers dans un autre dossier et sa je bloque.
J'avais pensé à quelque chose comme ca:
cd /j'indique_le_dossier_ou_se_trouve_les fichier_à_déplacer.
cat $verif | xargs mv -v /destination_du_fichier
Je reçois une erreur : Missing destination file operand.
Je précise que dans mon fichier $verif les noms des fichiers sont comme ci-dessous
2025_04_14_FACT1
2025_04_14_FACT2
2025_04_14_FACT3
Help me svp.
En vous remerciant et bon week end de Paques à tous
Anthony
Dernière modification par Piouky (Le 20/04/2025, à 10:51)
Hors ligne
#2 Le 20/04/2025, à 12:34
- Sciensous
Re : Déplacer fichier dont les nom se trouve dans un fichier
en testant avec un echo, tu verras que les fichiers sont placés à la fin de la commande
cat $verif | xargs echo mv -v /destination_du_fichier
Dernière modification par Sciensous (Le 20/04/2025, à 12:35)
sous ubuntu LTS de la 06 à la 22.04, puis arrêt pour Debian 12 et antiX 21 ou 23
( sous LXDE et gnome-shell )
Hors ligne
#3 Le 20/04/2025, à 13:11
- Watael
Re : Déplacer fichier dont les nom se trouve dans un fichier
salut,
avant toute autre chose :
J'ai actuellement des noms de fichier qui se trouve dans un fichier
pourquoi ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 20/04/2025, à 14:24
- diesel
Re : Déplacer fichier dont les nom se trouve dans un fichier
Parce que ! (non mais, de quoi je me mêle !
)
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#5 Le 20/04/2025, à 14:30
- Piouky
Re : Déplacer fichier dont les nom se trouve dans un fichier
Messieurs,
Merci de prendre le temps de m'aider.
Mes noms de fichiers sont placés dans un fichier car je souhaite par la suite vérifier justement si je ne l'ai pas déjà pas recu et donc si tel est le cas les exclure.
Hors ligne
#6 Le 20/04/2025, à 14:36
- Piouky
Re : Déplacer fichier dont les nom se trouve dans un fichier
en testant avec un echo, tu verras que les fichiers sont placés à la fin de la commande
cat $verif | xargs echo mv -v /destination_du_fichier
Désolé, peux tu m’expliquer, je ne comprends pas.
Hors ligne
#7 Le 20/04/2025, à 14:45
- Watael
Re : Déplacer fichier dont les nom se trouve dans un fichier
si, "finalement", tu veux vérifier chaque fichier, je te propose d'itérer tout de suite sur le contenu du fichier :
#!/bin/bash
declare -a fileList
while read fileName
do
#if tonTest "$fileName"
#then
fileList+=( "$fileName" )
#fi
done </chemin/tonFichier
mv -t /chemin/destination/ "${fileList[@]}"
mais, bon c'est une mauvaise pratique. voir le message en-dessous.
Dernière modification par Watael (Le 20/04/2025, à 14:53)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 20/04/2025, à 14:53
- Watael
Re : Déplacer fichier dont les nom se trouve dans un fichier
Parce que ! (non mais, de quoi je me mêle !
![]()
![]()
)
parce que c'est une mauvaise pratique, puisqu'on n'utilise pas ls dans un script, ou en vue d'écrire un script.
la bonne pratique est de vérifier si l'existant est déjà dans la destination :
for f in /chemin/src/*
do
if test -f "$f" -a ! -f "/chemin/dest/${f##*/}"
then
listFic+=( $f" )
fi
done
mv -t /chemin/dest "${listFic[@]}"
Dernière modification par Watael (Le 20/04/2025, à 14:54)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#9 Le 20/04/2025, à 15:00
- diesel
Re : Déplacer fichier dont les nom se trouve dans un fichier
parce que c'est une mauvaise pratique, puisqu'on n'utilise pas ls dans un script, ou en vue d'écrire un script.
Il n'a pas dit qu'il avait utilisé un "ls". Il a juste dit qu'il avait un fichier contenant des noms de fichiers et il n'a pas dit comment ce fichier avait été constitué. (ou j'ai mal lu ?)
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#10 Le 20/04/2025, à 15:11
- Sciensous
Re : Déplacer fichier dont les nom se trouve dans un fichier
si tu lances la commande modifiée que j'ai mise, tu verras qu'au lieu de
mv -v 2025_04_14_FACT1 2025_04_14_FACT2 2025_04_14_FACT3 /destination
tu auras
mv -v /destination 2025_04_14_FACT1 2025_04_14_FACT2 2025_04_14_FACT3
ce qui ne marche pas
sous ubuntu LTS de la 06 à la 22.04, puis arrêt pour Debian 12 et antiX 21 ou 23
( sous LXDE et gnome-shell )
Hors ligne
#11 Le 20/04/2025, à 15:15
- Watael
Re : Déplacer fichier dont les nom se trouve dans un fichier
Watael a écrit :parce que c'est une mauvaise pratique, puisqu'on n'utilise pas ls dans un script, ou en vue d'écrire un script.
Il n'a pas dit qu'il avait utilisé un "ls". Il a juste dit qu'il avait un fichier contenant des noms de fichiers et il n'a pas dit comment ce fichier avait été constitué. (ou j'ai mal lu ?)
tu es trop jeune, et tu ne sais pas encore.
ou, tu es trop vieux et (tu gatouilles) tu as oublié.
quoi qu'il en soit, stocker les noms de fichiers dans un fichier peut poser des problèmes qui n'apparaîtront pas en faisant comme je le propose au #8.
Dernière modification par Watael (Le 20/04/2025, à 15:32)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 20/04/2025, à 15:28
- Watael
Re : Déplacer fichier dont les nom se trouve dans un fichier
je ne vois pas de gain à utiliser xargs en bash :
$ echo mv -v $(<fichierSrc) /destination/
mv -v 2025_04_14_FACT1 2025_04_14_FACT2 2025_04_14_FACT3 /destination/
ou
$ mapfile -t <fichierSrc
$ echo mv -v "${MAPFILE[@]}" /destination/
mv -v 2025_04_14_FACT1 2025_04_14_FACT2 2025_04_14_FACT3 /destination/
sinon,
$ xargs -i -a fichierSrc echo mv -t /destination {}
mv -t /destination 2025_04_14_FACT1
mv -t /destination 2025_04_14_FACT2
mv -t /destination 2025_04_14_FACT3
et hop! pas d'UUOC.
Dernière modification par Watael (Le 20/04/2025, à 15:31)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#13 Le 20/04/2025, à 17:26
- diesel
Re : Déplacer fichier dont les nom se trouve dans un fichier
diesel a écrit :Watael a écrit :parce que c'est une mauvaise pratique, puisqu'on n'utilise pas ls dans un script, ou en vue d'écrire un script.
Il n'a pas dit qu'il avait utilisé un "ls". Il a juste dit qu'il avait un fichier contenant des noms de fichiers et il n'a pas dit comment ce fichier avait été constitué. (ou j'ai mal lu ?)
tu es trop jeune, et tu ne sais pas encore.
ou, tu es trop vieux et (tu gatouilles) tu as oublié.![]()
![]()
quoi qu'il en soit, stocker les noms de fichiers dans un fichier peut poser des problèmes qui n'apparaîtront pas en faisant comme je le propose au #8.
Je suis très jeune. Je viens d'entrer dans l'âge érotique.
Cela dit, une des raisons (valable) de stocker les noms des fichiers à déplacer dans un fichier est peut-être qu'il souhaite déplacer seulement une partie des fichiers contenus dans le répertoire "source". Et là, ce que tu proposes en #8 ne répond pas au problème posé.
Amicalement.
Jean-Marie (peut-être pas si gâteux que ça)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#14 Le 20/04/2025, à 17:52
- Watael
Re : Déplacer fichier dont les nom se trouve dans un fichier
Cela dit, une des raisons (valable) de stocker les noms des fichiers à déplacer dans un fichier est peut-être qu'il souhaite déplacer seulement une partie des fichiers contenus dans le répertoire "source". Et là, ce que tu proposes en #8 ne répond pas au problème posé.
bof.
s'il y a des critères (même aléatoires ) pour exclure des fichiers, on peut les ajouter au code...
ou faire un autre code qui permettra "d'inclure les exlusions".
Dernière modification par Watael (Le 20/04/2025, à 17:55)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#15 Le 20/04/2025, à 18:39
- Sciensous
Re : Déplacer fichier dont les nom se trouve dans un fichier
@Watael: toujours à la pointe du codage
par contre, mets en signature tout tes acronymes: c'est le second que je ne comprends pas UUOC
Utilisation inutile de chat ???
sous ubuntu LTS de la 06 à la 22.04, puis arrêt pour Debian 12 et antiX 21 ou 23
( sous LXDE et gnome-shell )
Hors ligne
#16 Le 20/04/2025, à 18:53
- Watael
Re : Déplacer fichier dont les nom se trouve dans un fichier
c'est ça : Useless Use Of Cat.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#17 Le 20/04/2025, à 20:28
- diesel
Re : Déplacer fichier dont les nom se trouve dans un fichier
Cela dit, une des raisons (valable) de stocker les noms des fichiers à déplacer dans un fichier est peut-être qu'il souhaite déplacer seulement une partie des fichiers contenus dans le répertoire "source". Et là, ce que tu proposes en #8 ne répond pas au problème posé.
bof.
s'il y a des critères (même aléatoires) pour exclure des fichiers, on peut les ajouter au code...
ou faire un autre code qui permettra "d'inclure les exlusions".
Et si tous les jours la liste des exclusions est différente ou s'il reçoit tous les jours un fichier contenant la liste des fichiers à déplacer ?
Tous les jours, tu modifies ton code ?
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#18 Le 20/04/2025, à 21:12
- Watael
Re : Déplacer fichier dont les nom se trouve dans un fichier
ces exclusions répondront toujours à un/des critère(s); ça doit pouvoir être passé en paramètres...
je ne travaillerai pas avec/pour un neuneu qui n'est pas capable d'exposer ces critères, et préfère me refiler une liste de fichiers à traiter.
Dernière modification par Watael (Le 20/04/2025, à 21:22)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#19 Le 20/04/2025, à 21:59
- Piouky
Re : Déplacer fichier dont les nom se trouve dans un fichier
Bonjour,
Merci à tous pour vos retours qui m'ont grandement aidé.
Je suis sur un autre sujet.
Mon fichier qui liste mes factures venait d'un retour de la fonction 'mv' et donc comprend le chemin de copie du fichier original et celui du nouveau exemple :
'/volume1/PARTAGE/COMMUN/FACTURES/2024-07-04_facture_273.pdf'
Je souhaiterais conserver que le nom du fichier "2024-07-04_facture_273.pdf" par ligne.
J'ai tenter la chose ci-dessous :
var=/volume1/PARTAGE/COMMUN/FACTURES/
cat LOG_FACTURECU_A_CORRIGER.sh | tr -d "$var"
Le problème c'est que cela supprimer comme si chaque lettre était dans séparé et donc modifie également le nom du fichier
Je voudrais que cela supprime exactement le champs.
Une idée ?
Merci à tous
Hors ligne
#20 Le 20/04/2025, à 22:11
- Watael
Re : Déplacer fichier dont les nom se trouve dans un fichier
Je suis sur un autre sujet.
autre sujet -> autre discussion !
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#21 Le 26/04/2025, à 23:07
- sputnick
Re : Déplacer fichier dont les nom se trouve dans un fichier
Yo, t'a juste raté -t
Normalement, les fichiers sources avec cp ou mv sont à gauche et la destination à droite.
Tu peux inverser cela avec:
cat "$verif" | xargs mv -v -t /destination_du_fichier
Tu peux aussi simplifier comme ça:
xargs < "$verif" mv -v -t /destination_du_fichier
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#22 Le 26/04/2025, à 23:17
- Watael
Re : Déplacer fichier dont les nom se trouve dans un fichier
c'est pourtant ce que j'ai montré au #12.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne