Renommez les fichiers pour supprimer le texte après le point

2

J'ai ces fichiers:

JE.TR21201610011612514806.47250728
JE.TR21201610011613514807.91514463
JE.TR21201610011614514808.4107721050
JE.TR21201610011626514818.3578493139
JE.TR21201610011627514819.1032212591
JE.TR21201610011628514820.3663420052
JE.TR21201610011629514821.3388683091

Comment puis-je les renommer?

JE.TR21201610011612514806
JE.TR21201610011613514807
JE.TR21201610011614514808
JE.TR21201610011624514817
JE.TR21201610011626514818
JE.TR21201610011627514819
JE.TR21201610011628514820
JE.TR21201610011629514821
    
posée jeanBrooklyn 11.07.2017 - 20:03
la source

4 réponses

8

N'importe lequel

$ rename -n 's/\.\d*$//' JE.*
rename(JE.TR21201610011612514806.47250728, JE.TR21201610011612514806)
rename(JE.TR21201610011613514807.91514463, JE.TR21201610011613514807)
rename(JE.TR21201610011614514808.4107721050, JE.TR21201610011614514808)
rename(JE.TR21201610011626514818.3578493139, JE.TR21201610011626514818)
rename(JE.TR21201610011627514819.1032212591, JE.TR21201610011627514819)
rename(JE.TR21201610011628514820.3663420052, JE.TR21201610011628514820)
rename(JE.TR21201610011629514821.3388683091, JE.TR21201610011629514821)

ou

$ prename -n 's/\.\d*$//' JE.*
JE.TR21201610011612514806.47250728 renamed as JE.TR21201610011612514806
JE.TR21201610011613514807.91514463 renamed as JE.TR21201610011613514807
JE.TR21201610011614514808.4107721050 renamed as JE.TR21201610011614514808
JE.TR21201610011626514818.3578493139 renamed as JE.TR21201610011626514818
JE.TR21201610011627514819.1032212591 renamed as JE.TR21201610011627514819
JE.TR21201610011628514820.3663420052 renamed as JE.TR21201610011628514820
JE.TR21201610011629514821.3388683091 renamed as JE.TR21201610011629514821

ou

$ mmv -n "JE.*.*" JE.#1
JE.TR21201610011612514806.47250728 -> JE.TR21201610011612514806
JE.TR21201610011613514807.91514463 -> JE.TR21201610011613514807
JE.TR21201610011614514808.4107721050 -> JE.TR21201610011614514808
JE.TR21201610011626514818.3578493139 -> JE.TR21201610011626514818
JE.TR21201610011627514819.1032212591 -> JE.TR21201610011627514819
JE.TR21201610011628514820.3663420052 -> JE.TR21201610011628514820
JE.TR21201610011629514821.3388683091 -> JE.TR21201610011629514821

(supprimez le -n pour terminer l’action)

ou

$ for f in JE.*; do echo mv "$f" "${f%.*([0-9])}"; done
mv JE.TR21201610011612514806.47250728 JE.TR21201610011612514806
mv JE.TR21201610011613514807.91514463 JE.TR21201610011613514807
mv JE.TR21201610011614514808.4107721050 JE.TR21201610011614514808
mv JE.TR21201610011626514818.3578493139 JE.TR21201610011626514818
mv JE.TR21201610011627514819.1032212591 JE.TR21201610011627514819
mv JE.TR21201610011628514820.3663420052 JE.TR21201610011628514820
mv JE.TR21201610011629514821.3388683091 JE.TR21201610011629514821

(supprimez le echo pour terminer l'action).

    
réponse donnée steeldriver 11.07.2017 - 20:17
la source
1

Voici un moyen rapide de le faire en Python:

$ tree
.
├── JE.TR21201610011612514806.47250728
├── JE.TR21201610011613514807.91514463
├── JE.TR21201610011614514808.4107721050
├── JE.TR21201610011626514818.3578493139
├── JE.TR21201610011627514819.1032212591
├── JE.TR21201610011628514820.3663420052
└── JE.TR21201610011629514821.3388683091

0 directories, 7 files
$ python -c 'import os,sys; map(lambda x: os.rename(x,x[0:x.rfind(".")]) , sys.argv[1:])' JE.*  
$ tree
.
├── JE.TR21201610011612514806
├── JE.TR21201610011613514807
├── JE.TR21201610011614514808
├── JE.TR21201610011626514818
├── JE.TR21201610011627514819
├── JE.TR21201610011628514820
└── JE.TR21201610011629514821

Il y a quelques points clés sur la façon dont cela fonctionne:

  • nous transmettons tous les noms de fichiers via JE.* glob, puis nous les référons via sys.argv[1:] .
  • map() nous permet d'exécuter la fonction lambda sur tout ce qui se trouve dans la tranche sys.argv[1:] list.
  • la fonction lambda que nous avons ici utilise la fonction os.rename(old,new) pour renommer chaque élément de la liste
  • x[0:x.rfind(".")] est en fait une tranche (ou une sous-chaîne). En utilisant la fonction .rfind() , nous trouvons l'index de la première occurrence de . à partir du côté droit de la chaîne (c'est-à-dire à partir de la fin). Ainsi, la tranche de liste peut être lue comme x[0:<index of the last dot>]
réponse donnée Sergiy Kolodyazhnyy 13.07.2017 - 09:30
la source
0

Un moyen simple de renommer des fichiers et des dossiers est la commande mv (raccourcie à partir de "move"). Son objectif principal est de déplacer des fichiers et des dossiers, mais il peut également les renommer car le fait de renommer un fichier est interprété par le système de fichiers comme le déplaçant d'un nom à un autre.

La syntaxe est:

mv (option) file1.ext file2.ext

file1.ext est "l'ancien" nom du fichier et file2.ext le nouveau nom.

    
réponse donnée Arpit Gaurav 11.07.2017 - 20:08
la source
0

Une commande que j'utilise assez souvent est: vidir . vi ou vim est pour les fichiers et vidir pour les répertoires.

Si vous exécutez vidir et obtenez la commande introuvable , vous devez installer le package moreutils :

sudo apt-get install moreutils

Retour à votre cas:

  1. Allez dans le répertoire où les fichiers sont: cd path-to-files
  2. Tapez la commande: vidir et appuyez sur Entrée
  3. Maintenant, vous verrez toutes les listes avec tous les fichiers, tapez cette commande: :1,$ s/\.\d*$//g (il recherche un point suivi de chiffres et supprime tout à la fin)
  4. Pour quitter et enregistrer le type: :x

Voir aussi lien

    
réponse donnée koni_raid 13.07.2017 - 10:58
la source

Lire d'autres questions sur les étiquettes