Supprimer les espaces des noms de fichiers sous Linux [fermé]

J'ai des centaines de fichiers jpg dans différents dossiers, comme ceci:

  • 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 traits de soulignement dans ce cas. J'ai juste besoin de supprimer l'espace. Je j'ai essayé ce qui suit, mais cela n'a pas fonctionné:

$ rename "s/ //g" *

Toute aide serait appréciée.

23
demandé sur Sam Timalsina 2013-03-12 00:20:59

2 réponses

Vous pouvez faire quelque chose comme ceci:

IFS="\n"
for file in *.jpg;
do
    mv "$file" "${file//[[:space:]]}"
done
20
répondu Blake 2013-03-11 20:31:30

Ce qui suit fonctionnerait au cas où c'était vraiment un espace.

$ rename "s/ //g" *

Essayez

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

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

35
répondu Anirudh Ramanathan 2013-03-11 20:25:06