Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 sad

cat $verif | xargs echo mv -v /destination_du_fichier

cool

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 ! lol lol lol )

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

Sciensous a écrit :

en testant avec un echo, tu verras que les fichiers sont placés à la fin de la commande sad

cat $verif | xargs echo mv -v /destination_du_fichier

cool

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 sad 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

diesel a écrit :

Parce que ! (non mais, de quoi je me mêle ! lol lol lol )

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

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 ?)

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

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é.
big_smile big_smile big_smile

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. wink

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

Watael a écrit :
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é.
big_smile big_smile big_smile

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. tongue smile smile smile

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) lol


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 big_smile ) pour exclure des fichiers, on peut les ajouter au code...
ou faire un autre code qui permettra "d'inclure les exlusions". lol

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 wink

par contre, mets en signature tout tes acronymes: c'est le second que je ne comprends pas UUOC
Utilisation inutile de chat ???

roll


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

Watael a écrit :

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 big_smile ) pour exclure des fichiers, on peut les ajouter au code...
ou faire un autre code qui permettra "d'inclure les exlusions". lol

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