Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ UNIX _ Renommer un fichier en ligne de commande,

Écrit par : VN 13 Apr 2018, 13:59

Bonjour à tous,

Je viens de tomber sur un truc qui me turlupine et reste sans réponse, à savoir comment modifier rapidement le nom d'un fichier sans passer par le Finder.

En effet, il y a un milliard de tutos genre

Code
mv test1.pdf test2.pdf


Mais quid des noms longs?

Par exemple, je viens de télécharger un fichier nommé 24827436574.pdf. Comme ce nom est tout sauf parlant, je vais lui en donner un plus explicite avec une petite commande
Code
mv 24827436574.pdf Balzac,\ Honoré\ de\ -\ Oeuvres\ Complètes\ -\ Édition\ 1882\ -\ Tame\ 3.pdf


Et puis, zut alors, ce n'est pas Tame, mais Tome, bien entendu.

Avec Finder, je clique sur le nom et je modifie une lettre, mais comment faire ça en ligne de commande sans retaper le tout et sans utiliser la sourie pour sélectionner le nom courant, le coller et le modifier ensuite?

Genre
Code
mv Balz[tab] *Tome\ 3.pdf


Merci. smile.gif

Écrit par : Tmps 13 Apr 2018, 14:22

Citation (VN @ 13 Apr 2018, 14:59) *
Bonjour à tous,

Je viens de tomber sur un truc qui me turlupine et reste sans réponse, à savoir comment modifier rapidement le nom d'un fichier sans passer par le Finder.


Bonjour,

Désolé mais je ne peux te répondre. Mais, par contre, explique-moi l'intérêt d'utiliser le terminal, surtout avec des longs noms? Car, pour moi, le plus simple et le plus rapide, c'est via le Finder.

J'aimerais vraiment pouvoir comprendre cette envie de jouer avec le terminal si c'est pour se compliquer la vie.

Écrit par : audionuma 13 Apr 2018, 14:55

Un peu d'auto-complétion avec 'tab' et de navigation avec 'flèche gauche'/'flèche droite' :

Code
$ mv B[tab]
$ mv Balzac,\ Honoré\ de\ -\ Oeuvres\ Complètes\ -\ Édition\ 1882\ -\ Tame\ 3.pdf B[tab]
$ mv Balzac,\ Honoré\ de\ -\ Oeuvres\ Complètes\ -\ Édition\ 1882\ -\ Tame\ 3.pdf Balzac,\ Honoré\ de\ -\ Oeuvres\ Complètes\ -\ Édition\ 1882\ -\ Tame\ 3.pdf

touche 'flèche gauche' jusqu'à Tame
touche 'backspace' : le 'a' est supprimé
touche 'o' : le 'o' est inséré
touche 'return'
Code
$ ls
Balzac,\ Honoré\ de\ -\ Oeuvres\ Complètes\ -\ Édition\ 1882\ -\ Tome\ 3.pdf



Écrit par : fgiron 13 Apr 2018, 15:10

Code
for f in *Tame*; do mv $f ${f//Tame/Tome}; done


La lettre f pour fichier peut être remplacée par n'importe quelle autre, du moment que la même est utilisée pour toute la ligne de commande.
L'expression Tame de tous les fichiers du répertoire est remplacée par Tome

Écrit par : VN 13 Apr 2018, 16:40

Un grand merci à audionuma et fgiron, je vais tester ça et apprendre par coeur. laugh.gif

Citation (Tmps @ 13 Apr 2018, 15:22) *
Désolé mais je ne peux te répondre. Mais, par contre, explique-moi l'intérêt d'utiliser le terminal, surtout avec des longs noms? Car, pour moi, le plus simple et le plus rapide, c'est via le Finder.

J'aimerais vraiment pouvoir comprendre cette envie de jouer avec le terminal si c'est pour se compliquer la vie.


Justement, le but n'est pas de se compliquer la vie. Parfois, je passe mon temps à utiliser iTerm2 en plein écran pour éviter toute distraction. Deux onglets, pour vim et le shell. Et j'écris au kilomètre. Du coup, c'est une perte de temps pour repasser sur un autre Space avec Finder et des applications habituelles. Bien entendu, si telle ou telle manipulation peut être réalisée plus facilement autrement, autant le faire, sinon on reste devant l'écran noir. C'est tout. tongue.gif

Par exemple, n'étant pas un grand pro des RegEx, j'utilise A Better File Rename pour renommer des fichiers en masse, alors que d'autres le feraient plus rapidement avec la commande rename.

Écrit par : fgiron 13 Apr 2018, 16:47

Juste une petite remarque: j'évite en général les noms de fichiers avec espace, que je remplace par un "_" ou "-". Le traitement en masse en ligne de commande peut poser problème avec les espaces.

Écrit par : VN 13 Apr 2018, 22:36

Citation (fgiron @ 13 Apr 2018, 17:47) *
Juste une petite remarque: j'évite en général les noms de fichiers avec espace, que je remplace par un "_" ou "-". Le traitement en masse en ligne de commande peut poser problème avec les espaces.


En effet, c'est mieux. smile.gif J'ai juste essayé de ne pas oublier comment gérer les espaces en ligne de commande. cool.gif

Comme je refuse de m'enfermer dans un SE quelconque, fut-ce MacOS, je nomme mes fichiers comme suit: date_sujet_[tags]_langue.ext

Par exemple,
Code
20180413_000000_facture_Darty_achat_aspirateur_LG_[accountingx]_[invoicex]_[vacuum_cleanerx]_LANGFRFR.pdf


Le string 000000 indique que le fichier est scanné, sinon ce serait 20180413_233407.

Les tags de contenu font partie du nom du fichier, les 255 caractères me suffisent pour ça, en général laugh.gif , ça marche sous MacOS, Linux et même Windows. Les Finder tags sont utilisés comme tags d'action, genre "urgent", "en cours"... Si Dropbox me les perd, ce n'est pas grave.

Écrit par : fgiron 14 Apr 2018, 16:01

Si ça peut être utile à quelqu'un, voici un script nommé renomme que je me suis fait pour renommer les fichiers du répertoire courant:

Code
#!/bin/bash
# renomme : substitue l'argument 2 à l'argument 1
# dans les noms de fichiers du répertoire courant

for f in *$1*; do mv $f ${f//$1/$2}; done
exit 0


Je le place à la racine de ma session dans un répertoire ~/bin

Écrit par : frankie00 17 May 2019, 18:13

sans trop te fatiguer il y a un logiciel qui s'appelle A Better Finder Rename
en vente dans les bons super-marchés

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)