J'ai quelques répertoires et sous-répertoires contenant des fichiers sans extension de fichier. Je veux ajouter .jpg
à tous les fichiers contenus dans ces répertoires. J'ai vu des scripts bash pour changer l'extension du fichier mais pas pour en ajouter un. Il doit également être récursif. Quelqu'un peut-il aider s'il vous plaît?
Commande alternative sans boucle explicite ( man find
):
find . -type f -exec mv '{}' '{}'.jpg \;
Explication: ceci trouve tous les fichiers de manière récursive (-type f
) à partir du répertoire actuel (.
) et applique la commande de déplacement ( mv
) à chacun d’eux. Notez également les guillemets autour de {}
, de sorte que les noms de fichiers comportant des espaces (et même des nouvelles lignes ...) soient correctement gérés.
cela va trouver des fichiers sans extension et ajouter votre .jpg
find /path -type f -not -name "*.*" -exec mv "{}" "{}".jpg \;
C'est un peu tard, mais j'ai pensé ajouter une meilleure solution (bien que peut-être moins lisible) que celles proposées jusqu'à présent:
find /path -type f -not -name "*.*" -print0 | xargs -0 rename 's/(.)$/$1.jpg/'
En utilisant le find | xargs
pattern entraîne généralement une exécution plus efficace, car vous n'avez pas à créer un nouveau processus pour chaque fichier.
Notez que cela nécessite la version du changement de nom trouvée dans les distributions Debian (nommément prename), plutôt que le changement de nom traditionnel. Cependant, ce n'est qu'un petit script Perl, il serait donc assez facile d'utiliser la commande ci-dessus sur n'importe quel système.
comme ça,
for f in $(find . -type f); do mv $f ${f}.jpg; done
Je ne m'attends pas à ce que vous ayez des noms de fichiers séparés par des espaces,
Si vous le faites, les noms devront être traités un peu.
Si vous voulez exécuter la commande depuis un autre répertoire,
vous pouvez remplacer le find .
avec find /target/directory
.
Pour renommer tous les fichiers sans extension dans Windows Basic, vous pouvez faire ren * *.jpg
Puisque le fichier n’a pas d’extension, utilisez simplement le *, ou si vous voulez changer le png en jpg, utilisez ren *.png *.jpg
rename
pas sûr qu'il puisse renommer des fichiers sans extensions (je suis sous Windows 7 en ce moment)