logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 19-02-2019 20:44:40

manuel44
Membre
Lieu : Bruxelles
Distrib. : Debian 10
(G)UI : cinnamon
Inscription : 19-02-2019

[Résolu] comment déplacer le premier fichier d'une liste dans un réper

Bonjour tout le monde,

J'utilise linux depuis pas mal de temps pour pleins de bonne raisons mais sans trop utilisé la console. Là j'ai décidé de mis mettre un peu sérieusement.

J'aimerais faire un truc plutôt simple (je crois) : déplacer le premier fichier d'une liste dans un répertoire du dossier courant (ou un autre, peut importe).
Après quelques recherches j'ai trouvé la commande

ls | head -n 1

qui me sort bien le premier fichier d'un répertoire. Mais comment renvoyer ce résultat en une seul ligne vers un autre répertoire ? avec la commande mv sans doute ? Mais comme elle est articulée

mv nom_du_fichié nom_du_répertoire

je ne sais pas comment m'y prendre...

Je ne suis peut-être pas sur la bonne voie avec les outils que j'ai pour l'instant.

Si quelqu'un a une idée...

Merci d'avance.

Dernière modification par manuel44 (19-02-2019 23:22:34)

Hors ligne

#2 19-02-2019 21:13:58

Antidentity
Membre
Distrib. : See signature
Noyau : Linux amd64
(G)UI : KDE / Openbox
Inscription : 03-08-2016

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

Je pense que tu peux faire quelque chose du style:

find $HOME/rep_source/* | head -n 1 -exec mv {} $HOME/rep_destination/ \;



Mais sans certitude... à tester.

edit: le $HOME étant la variable pour le répertoire utilisateur

Edit à toto : Réduction de la ligne de commande afin qu'elle soit lue entièrement dans le BBCode (surtout la fin/.

Dernière modification par Antidentity (19-02-2019 21:15:13)


Debian - KDE / Openbox / Windows10

Hors ligne

#3 19-02-2019 21:24:35

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

Faire un test avant en remplaçant la commande mv avec la commande de copie :

cp -r ...


à la place du déplacement avec mv. wink

Ou avec :

rsync -av ...



Plus rapide que la copie en cas de gros et nombreux morceaux concernés :
https://debian-facile.org/doc:reseau:rsync

Dernière modification par smolski (19-02-2019 21:29:06)


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#4 19-02-2019 21:39:46

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

En utilisant les tableaux (array)
pour tester :

files=(*); echo ${files[1]}



files=(*); mv ${files[1]} destination



Ca doit fonctionner avec les espaces tout ça...


edit : lignes de codes modifées désolé, mauvais copié collé
edit2 : le décompte se fait à partir de 0, donc 0 pour le premier fichier

Dernière modification par David5647 (19-02-2019 21:51:39)

Hors ligne

#5 19-02-2019 21:42:34

manuel44
Membre
Lieu : Bruxelles
Distrib. : Debian 10
(G)UI : cinnamon
Inscription : 19-02-2019

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

Merci,

J'ai comme retour

head : option invalide -- 'e'


Puis j'ai supprimer l' option 'e' mais après c'est l'option 'x' qui coince...

Je n'ai pas encore tapé

man head



Si vous avez une solution sous la main je suis preneur, sinon j'irai chercher.

Hors ligne

#6 19-02-2019 21:51:39

manuel44
Membre
Lieu : Bruxelles
Distrib. : Debian 10
(G)UI : cinnamon
Inscription : 19-02-2019

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

Ca va un peu vite,

j'ai un doute sur le $HOME. Je dois bien tapé le chemin complet du répertoire ? Dans mon cas quand je tape /manuel/series/...après le $HOME il se transforme en /home/manuel/series/...

Hors ligne

#7 19-02-2019 21:54:20

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

echo $HOME


/home/david



C'est une "constante" qui renvoie le path de l'utilisateur

Hors ligne

#8 19-02-2019 22:19:56

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

mv $(ls -1 | head -1) Répertoire

Hors ligne

#9 19-02-2019 22:40:41

manuel44
Membre
Lieu : Bruxelles
Distrib. : Debian 10
(G)UI : cinnamon
Inscription : 19-02-2019

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

C'est quand même génial ces lignes de codes ! wink

le

files=(*); mv ${files[0]} destination


fonctionne parfaitement.

Et le plus beau c'est qu'il ne faut pas tapé le chemin complet de la destination. Ca fonctionne n'importe où dans les répertoires.
Y a plus qu'a faire un alias dans ~/.bash_aliases et le tour est joué !

Quelqu'un peut-il m'aiguiller sur les explication de la ligne de code pour que je progresse un peu plus ?

Je vais essayé maintenant le

mv $(ls -1 | head -1) Répertoire



Merci a tous, c'était mon premier post ici smile

Hors ligne

#10 19-02-2019 22:50:34

manuel44
Membre
Lieu : Bruxelles
Distrib. : Debian 10
(G)UI : cinnamon
Inscription : 19-02-2019

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

La deuxième ligne de code fonctionne aussi bien !

mv $(ls -1 | head -1) Répertoire



Pour moi c'est résolu mais je ne sais pas comment ont fait.

Hors ligne

#11 19-02-2019 23:01:55

Antidentity
Membre
Distrib. : See signature
Noyau : Linux amd64
(G)UI : KDE / Openbox
Inscription : 03-08-2016

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

J'ai testé, les 2 lignes fonctionnent mais il ne faut pas que les fichiers aient des espaces dans leur nom.

Pour ma proposition de code, elle ne fonctionne pas avec l'argument head + la commande exec apparemment.

Debian - KDE / Openbox / Windows10

Hors ligne

#12 19-02-2019 23:17:05

manuel44
Membre
Lieu : Bruxelles
Distrib. : Debian 10
(G)UI : cinnamon
Inscription : 19-02-2019

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

Effectivement, pas d'espace dans les noms de fichier !

Je vais faire du renommage en masse a mes heures perdues...

Hors ligne

#13 19-02-2019 23:21:28

David5647
Membre
Distrib. : Debian Sid
Noyau : 5.15.0-2-amd64
(G)UI : i3wm + des bouts de kde
Inscription : 27-08-2017

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

la commande :

files=(*); mv ${files[0]} destination

c'est en fait deux lignes (séparée par ";" , oui j'ai triché tongue )
on créé une variable files qui "liste" tout les fichiers/dossiers du répertoire. Je trouve ça pas forcément intuitif,
mais si tu tente "a=" et tu utilises l'autocompletion, le shell te propose bien la liste de fichier, alors pourquoi pas... roll
Puis ,dans la deuxième partie : ${files[0] renvoie l'élément i du tableau files

la commande

mv $(ls -1 | head -1) Répertoire


le $(command)  est "remplacée"/équivalente à la sortie de command
on utilise un pipe : |
qui prend la sortie de la commande à gauche et l'envoie à l'entré de la commande de droite
head permet d'afficher les premières lignes, avec l'option -1, seulement la première

Pour mettre en résolu, modifie ton premier post et change le titre

edit : pour les fichiers avec espace : rajouter des quotes:

files=(*); mv "${files[0]}" destination

Dernière modification par David5647 (19-02-2019 23:28:50)

Hors ligne

#14 19-02-2019 23:57:52

MicP
Membre
Inscription : 29-02-2016

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

Bonjour

Si le nom du fichier comporte un caractère espace (ou autre caractère spécial)
pour éviter les noms de répertoire => ne déplacer que des fichiers,
et pour ne déplacer que le premier fichier trouvé :

mv "$(find "/chemin du /répertoire Source/" -type f | head -1)" "/chemin du /répertoire Cible/"

Dernière modification par MicP (20-02-2019 00:00:04)

Hors ligne

#15 20-02-2019 00:55:20

manuel44
Membre
Lieu : Bruxelles
Distrib. : Debian 10
(G)UI : cinnamon
Inscription : 19-02-2019

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

Merci pour les explications,

J'avance a grand pas. Reste un point obscure : le $. Mais on ne va pas faire un cour couplet ici wink

Hors ligne

#16 20-02-2019 07:53:30

MicP
Membre
Inscription : 29-02-2016

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper

Bonjour

…Reste un point obscure : le $…


Dans

mv "$(find "/chemin du /répertoire Source/" -type f | head -1)" "/chemin du /répertoire Cible/"

l'interpréteur de commandes bash
commence par remplacer tout ce qui est entre les parenthèses qui suivent le caractère $
par le retour de la suite de commandes

find "/chemin du /répertoire Source/" -type f | head -1


Comme ce retour est un nom de fichier
dans lequel il pourrait y avoir un ou des caractères espace (ou autres caractères spéciaux)
il vaut mieux "entourer" ce retour de commandes par des double guillemets

Ce qui donne :

"$(find "/chemin du /répertoire Source/" -type f | head -1)"

Dernière modification par MicP (20-02-2019 09:58:56)

Hors ligne

#17 20-02-2019 08:45:34

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [Résolu] comment déplacer le premier fichier d'une liste dans un réper


saque eud dun (patois chtimi : fonce dedans)

Hors ligne

Pied de page des forums