Comment pourrais-je renommer plusieurs fichiers comme,
IonXpress_049.T11014.R_2014_11_13_11_26_35_user_PR2-41-Pooling0026_3140_13112014.bam
IonXpress_050.T11114.R_2014_11_13_11_26_35_user_PR2-41-Pooling0026_3140_13112014.bam
À,
T11014.bam
T11114.bam
Il existe plusieurs façons de renommer à partir de la ligne de commande. Voici un one liner. Allez dans le répertoire où se trouvent les fichiers .bam
et essayez ceci,
for i in *.bam; do mv "$i" "$(echo $i | awk -F"." '{print $2}').bam"; done
pour i dans * .bam faire mv destination source fait
.
à l'aide de awk
comme,$ echo IonXpress_049.T11014.R_2014_11_13_11_26_35_user_PR2-41-Pooling0026_3140_13112014.bam | awk -F "." '{print $ 2}' $ T11014
On peut utiliser un séparateur de champs personnalisé à l’aide de l’option -F
. Voir man awk
pour plus d'informations.
rename 's/.*?\.([^.]+).*/$1.bam/' *.bam -vn
Supprimez le -vn
lorsque vous pouvez le voir faire ce que vous voulez. Voici mon harnais de test:
$ touch 34234234kh.TESTING00{1..3}.234978623478y234.bam
$ rename 's/.*?\.([^.]+).*/$1.bam/' *.bam -vn
34234234kh.TESTING001.234978623478y234.bam renamed as TESTING001.bam
34234234kh.TESTING002.234978623478y234.bam renamed as TESTING002.bam
34234234kh.TESTING003.234978623478y234.bam renamed as TESTING003.bam
Vous pouvez utiliser le merveilleux programme krename
:
Sudo apt-get install krename
Dans ce programme, vous avez un résultat preview, et vous pouvez notamment utiliser une certaine plage de masques de noms de fichiers:
Le masque est à. Voir les noms de fichier originaux en et les noms futurs en. Si cela vous semble correct, vous pouvez appuyer sur terminer: ➃ - ce n’est qu’après cela que les fichiers seront renommés.
Utilisez la commande find pour rechercher tous les fichiers *.bam
et pour lire tous les fichiers un par un, puis finalement avec la commande mv
et les renommer en noms de votre choix.
find /path/to/maindir -type f -name "*.bam" -print0 | while IFS= read -d '' -r file
do
echo mv -v "$file" /path/to/maindir/"$(awk -F'.' '{print $2".bam"}'<<< "$file")";
done
Résultat:
mv -v /home/USER/maindir/IonXpress_049.T11014.R_2014_11_13_11_26_35_user_PR2-41-Pooling0026_3140_13112014.bam /home/USER/maindir/T11014.bam
mv -v /home/USER/maindir/IonXpress_050.T11114.R_2014_11_13_11_26_35_user_PR2-41-Pooling0026_3140_13112014.bam /home/USER/maindir/T11114.bam
Si vous avez coché le résultat, supprimez la commande echo
à renommer réellement.
En admettant que
.bam
est toujours présenteCette solution python devrait faire l'affaire. Le nombre de sections peut varier, cela fonctionnerait quand même:
#!/usr/bin/env python3
import os
import shutil
import sys
directory = sys.argv[1]
for item in os.listdir(directory):
if not item.startswith("."):
edit = item.split("."); newname = (".").join([edit[1], edit[-1]])
if len(edit) > 2:
shutil.move(directory+"/"+item, directory+"/"+newname)
Copiez-le dans un fichier vide, rendez-le exécutable (pour l'exécuter sans le préfixe python3
) et exécutez-le à l'aide de la commande suivante:
</path/to/script> <directory_with_files>
Pour que:
monkey.banana.peanut.bam
devient
banana.bam
et
monkey.Apple.peaunt.another_string.and_alot_more.bam
devient
Apple.bam
tandis que
something.bam
est laissé seul.
Une autre solution python via le module re
.
script.py
#!/usr/bin/python3
import sys
import re
import os
import shutil
directory = sys.argv[1]
for item in os.listdir(directory):
if '.' in item:
newname = re.sub(r'^[^.]+\.([^.]*).+(\.bam)', r'\1\2', item)
shutil.move(directory+"/"+item, directory+"/"+newname)
Comment courir?
python3 script.py /path/to/the/directory/where/the/files/you/want/to/rename/are/stored
Bien que toutes ces réponses soient bonnes, je souhaite vous montrer une méthode qui ne nécessite pas de programmation (et peut être beaucoup plus rapide si vous avez déjà installé Sublime Text)
ctrl+shif+p
> Installer le paquet> FileBrowser http://github.com/aziz/SublimeFileBrowser )Configurez le raccourci clavier FileBrowser (ctrl+shift+p
> Utilisateur de liaisons clés), par exemple.
{ "keys": ["f1"], "command": "dired", "args": { "immediate": true } }
démarrer le FileBrowser (F1
)
ctrl+d
)shift+R
)ctrl+right
pour passer d'un mot à l'autre)Enter