GNU/Linux >> Tutoriels Linux >  >> Linux

Comment changer l'extension de plusieurs fichiers ?

Je voudrais changer une extension de fichier de *.txt à *.text . J'ai essayé d'utiliser le basename commande, mais j'ai du mal à modifier plus d'un fichier.

Voici mon code :

files=`ls -1 *.txt`

for x in $files
do
    mv $x "`basename $files .txt`.text"
done

J'obtiens cette erreur :

basename: too many arguments Try basename --help' for more information

Réponse acceptée :

Directement du wiki de Greg :

# Rename all *.txt to *.text
for f in *.txt; do 
    mv -- "$f" "${f%.txt}.text"
done

*.txt est un modèle global, utilisant * comme caractère générique pour correspondre à n'importe quelle chaîne. *.txt correspond à tous les noms de fichiers se terminant par ".txt".

-- marque la fin de la liste des options. Cela évite les problèmes avec les noms de fichiers commençant par des tirets.

${f%.txt} est une extension de paramètre, remplacée par la valeur du f variable avec .txt supprimé de la fin.

Voir également l'entrée expliquant pourquoi vous ne devriez pas analyser ls .

Si vous devez utiliser basename , votre syntaxe serait :

for f in *.txt; do
    mv -- "$f" "$(basename -- "$f" .txt).text"
done

Linux
  1. Comment changer l'identité d'un système Linux

  2. Comment changer le nom d'hôte sur Ubuntu

  3. Comment changer le mot de passe root mysql

  4. Comment renommer plusieurs fichiers d'une extension à une autre sous Linux/Unix ?

  5. Comment diviser un fichier texte en plusieurs fichiers *.txt ?

Comment modifier récursivement les autorisations de fichiers sous Linux

Linux renommer l'extension de plusieurs fichiers

Comment changer le mot de passe root sous Linux

Comment changer le nom d'hôte du serveur dans Ubuntu

Comment changer le port SSH dans CentOS

Comment changer le fuseau horaire sur le serveur Ubuntu 18.04 ?