Comment faire mv original.filename new.original.filename
sans retaper le nom de fichier d'origine?
J'imaginerais pouvoir faire quelque chose comme mv -p=new. original.filename
ou peut-être mv original.filename new.~
ou autre chose - mais je ne vois rien de tel après avoir regardé man mv
/ info mv
pages.
Bien sûr, je pourrais écrire un script shell pour ce faire, mais n'y a-t-il pas une commande / indicateur existant pour cela?
Vous pouvez utiliser la
rename(1)
commande:Edit: Si ce
rename
n'est pas disponible et que vous devez renommer plus d'un fichier, le script shell peut vraiment être court et simple pour cela. Par exemple, pour renommer tous*.jpg
àprefix_*.jpg
dans le répertoire courant:la source
rename 's/(.*).example/$1/' *.example
m'a sauvé de l'ennui.$
dans ce scénario. Alors juste's/(.*)/new.$1/'
rename
La commande ne fonctionne pas sur ma machine RHEL 6. Existe-t-il différentes versions de cette commande? Cela afor ... done
fonctionné pour moi.Vous pouvez obtenir un renommage de plusieurs fichiers compatible Unix (en utilisant des caractères génériques) en créant une boucle for:
la source
${file%%}
fais-tu? Semble similaire à simplement $ {file}J'ai vu des gens mentionner une
rename
commande, mais elle n'est pas systématiquement disponible sur les systèmes Unix (contrairement aux systèmes Linux, disons, ou Cygwin - sur les deux, renommer est un exécutable plutôt qu'un script). Cette version derename
a une fonctionnalité assez limitée:Il remplace la partie from des noms de fichier par to , et l'exemple donné dans la page de manuel est:
Cela renomme foo1 en foo01 et foo10 en foo010, etc.
J'utilise un script Perl appelé
rename
, que j'ai initialement extrait de la première édition du livre Camel, vers 1992, puis étendu, pour renommer les fichiers.Cela vous permet d'écrire n'importe quelle commande de substitution ou de translittération Perl pour mapper les noms de fichiers. Dans l'exemple spécifique demandé, vous utiliseriez:
la source
pacman
utilisation:pacman -Sy perl-rename
. Ensuite, ajoutez-y un alias dans votre bashrc:alias rename='perl-rename'
'.html
aux noms de fichiers, utilisez's/$/.html/'
- pour supprimertmp
de partout dans les noms de fichiers, utilisez's/tmp//g'
(recherchertmp
et remplacer par rien partout).Le moyen le plus simple de renommer en bloc des fichiers dans un répertoire est:
la source
S'il est ouvert à une modification, vous pouvez utiliser un suffixe au lieu d'un préfixe. Ensuite, vous pouvez utiliser la complétion par tabulation pour obtenir le nom de fichier d'origine et ajouter le suffixe.
Sinon, ce n'est pas quelque chose qui est pris en charge par la commande mv. Un simple script shell pourrait cependant faire face.
la source
Dans mon cas, j'ai un groupe de fichiers qui doit être renommé avant de pouvoir travailler avec eux. Chaque fichier a son propre rôle dans le groupe et a son propre modèle.
En conséquence, j'ai une liste de commandes de renommage comme celle-ci:
Essayez ceci aussi:
Cela produira toutes les combinaisons avec des préfixes et des suffixes:
Une autre façon de résoudre le même problème consiste à créer un tableau de mappage et à ajouter le préfixe correspondant pour chaque type de fichier, comme indiqué ci-dessous:
la source
Renommer en bloc les fichiers script bash
la source
Je sais qu'il y a de bonnes réponses ici, mais je n'ai trouvé aucune référence pour gérer les extensions de nom de fichier lors de l'ajout d'un suffixe.
J'avais besoin d'ajouter le suffixe «_en» à tous les
wav
fichiers d'un dossier avant l'extension de fichier.La magie est là:
%.*
for filename in *.wav; do mv $filename ${filename%.*}_en.wav; done;
Si vous devez gérer différentes extensions de fichier, cochez cette réponse. Un peu moins intuitif.
la source