web-dev-qa-db-fra.com

Supprimer les espaces blancs des noms de fichiers sous Linux

J'ai des centaines de fichiers jpg dans différents dossiers comme celui-ci:

  • 304775 105_01.jpg
  • 304775 105_03.jpg
  • 304775 105_05.jpg
  • 304775 105_07.jpg
  • 304775 105_02.jpg
  • 304775 105_04.jpg
  • 304775 105_06.jpg

Fondamentalement, je dois supprimer les ESPACES. Je connais déjà la commande pour changer les espaces en traits de soulignement:

$ rename "s/ /_/g" *

Mais je n'ai pas besoin des soulignés dans ce cas. J'ai juste besoin de retirer l'espace. J'ai essayé ce qui suit, mais cela n'a pas fonctionné:

$ rename "s/ //g" *

Toute aide serait appréciée.

26
Sam Timalsina

Vous pouvez faire quelque chose comme ça:

IFS="\n"
for file in *.jpg;
do
    mv "$file" "${file//[[:space:]]}"
done
23
Blake

Ce qui suit fonctionnerait au cas où ce serait vraiment un espace.

$ rename "s/ //g" *

Essayer

$ rename "s/\s+//g" *

\s est un caractère d'espacement, appartenant à l'ensemble de [ \t\r\n].

37
Anirudh Ramanathan