Maison >Opération et maintenance >exploitation et maintenance Linux >Quelle est la commande pour modifier le nom de fichier sous Linux ?

Quelle est la commande pour modifier le nom de fichier sous Linux ?

青灯夜游
青灯夜游original
2023-02-23 12:05:0650348parcourir

Il existe deux commandes pour modifier les noms de fichiers sous Linux : 1. la commande mv, qui peut non seulement renommer des fichiers, mais également déplacer des fichiers ou des dossiers ; modifier la syntaxe "mv [paramètre] ancien nom de fichier, nouveau nom de fichier" ; commande rename, les noms de fichiers peuvent être modifiés par lots par remplacement de chaîne, la syntaxe est "renommer [paramètre] ancien nom de fichier, nouveau nom de fichier".

Quelle est la commande pour modifier le nom de fichier sous Linux ?

L'environnement d'exploitation de ce tutoriel : système CentOS 6, ordinateur Dell G3.

Pour renommer des fichiers ou des répertoires sous Linux, vous pouvez utiliser la commande mv ou la commande rename. Nous partageons ici comment utiliser les deux.

1. Utilisez la commande mv

La commande mv peut à la fois renommer et déplacer des fichiers ou des dossiers.

mv [参数] 旧文件/目录 新文件名/目录

Exemple : Renommez le répertoire A en B

mv A B

Exemple : Déplacez le répertoire /a vers /b et renommez-le en c

mv /a /b/c

En fait, pour renommer un fichier ou un répertoire en mode texte, utilisez simplement mv Utilisez simplement le Par exemple, si vous souhaitez renommer un fichier nommé abc en 1234 :

mv abc 1234

Notez que s'il y a un fichier de 1234 dans le répertoire courant, ce fichier l'écrasera.

Comment renommer plusieurs fichiers à l'aide de la commande mv ? La commande

mv ne peut renommer qu'un seul fichier à la fois, mais elle peut être utilisée avec d'autres commandes telles que find dans une boucle bash for ou while pour renommer plusieurs fichiers.

Exemple : Comment changer l'extension .html en .php en utilisant une boucle bash for pour renommer tous les fichiers .html du répertoire actuel.

for f in *.html; do 
    mv -- "$f" "${f%.html}.php"
done

Analysons le code ligne par ligne :

QuantityLa première ligne crée une boucle for et parcourt une liste de tous les fichiers .html.

Quantity La deuxième ligne s'applique à chaque élément de la liste et déplace le fichier vers un nouveau en remplaçant .html par .php. La section ${file%.html} utilise l'extension des paramètres shell .html pour supprimer la partie du nom de fichier.

Quantity done indique la fin du segment de boucle.

Nous pouvons également utiliser la commande find en combinaison avec mv pour obtenir la même fonction que ci-dessus.

find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' \;

La commande find utilise ce commutateur pour transmettre tous les fichiers .html se terminant par le répertoire courant mv à la commande -exec un par un. La chaîne {} est le nom du fichier en cours de traitement.

Comme vous pouvez le voir dans l'exemple ci-dessus, renommer plusieurs fichiers à l'aide de la commande mv n'est pas une tâche facile car cela nécessite une bonne compréhension des scripts Bash.

2. Utilisez la commande rename

La commande rename utilise le remplacement de chaîne pour modifier par lots les noms de fichiers.

  • Renommer un seul fichier

# 将main1.c重命名为main.c
rename main1.c main.c main1.c
  • renommer prend en charge les caractères génériques

?  可替代单个字符
*  可替代多个字符
[charset]  可替代charset集中的任意单个字符

Il y a ces fichiers foo1, …, foo9, foo10, …, foo278

si vous utilisez rename foo 0 foto ? renommera les fichiers de foo1 en foo9 en foo01 en foo09. Les fichiers renommés ne sont que des fichiers avec un nom à 4 caractères, et foo dans le nom de fichier est remplacé par foo0. rename foo foo0 foo?,会把foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0。

如果使用rename foo foo0 foo??,foo01到foo99的所有文件都被重命名为foo001到foo099,只重命名5个字符长度名称的文件,文件名中的foo被替换为foo0。

如果使用rename foo foo0 foo*,foo001到foo278的所有文件都被重命名为foo0001到foo0278,所有以foo开头的文件都被重命名。

如果使用rename foo0 foo foo0[2]*

Si vous utilisez renommer foo foo0 foo??, tous les fichiers de foo01 à foo99 seront renommés en foo001 à foo099, seuls les fichiers avec des noms de 5 caractères seront renommés, et foo dans le le nom du fichier sera renommé. Remplacez par foo0.
  • Si vous utilisez renommer foo foo0 foo*, tous les fichiers de foo001 à foo278 sont renommés en foo0001 en foo0278, et tous les fichiers commençant par foo sont renommés.

    Si vous utilisez renommer foo0 foo foo0[2]*, tous les fichiers de foo0200 à foo0278 sont renommés foo200 en foo278, et foo0 dans le nom du fichier est remplacé par foo.

rename prend en charge les expressions régulières

# 把文件名中的AA替换成aa
rename "s/AA/aa/" * 

# 把.html 后缀的改成 .php后缀
rename "s//.html//.php/" * 

# 把所有的文件名都以txt结尾
rename "s/$//.txt/" *

# 把所有以.txt结尾的文件名的.txt删掉
rename "s//.txt//" *
Par défaut, la commande rename n'écrasera pas les fichiers existants ; mais le passage du paramètre -f permet d'écraser les fichiers existants.
rename -f 's/.html/.php/' *.html

Exemples courants d'utilisation de la commande rename

Remplacer les espaces dans les noms de fichiers par des traits de soulignement

rename 'y/ /_/' *
Convertir les noms de fichiers en minuscules
rename 'y/A-Z/a-z/' *

Convertir les noms de fichiers en majuscules

rename 'y/A-Z/a-z/' *
🎜Recommandations associées : "🎜Tutoriel vidéo Linux 🎜》🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn