J'ai quelques répertoires et sous-répertoires contenant des fichiers sans extension de fichier. Je souhaite ajouter .jpg
à tous les fichiers contenus dans ces répertoires. J'ai vu des scripts bash pour changer l'extension de fichier mais pas simplement pour en ajouter une. Il doit également être récursif, quelqu'un peut-il aider s'il vous plaît?
bash
file
shell
command-line
file-extension
robjmills
la source
la source
for
boucle bouleversante bash pour itérer sur une liste de fichiers, ce n'est pas correct. Lafor
boucle bash émet chaquemv
commande de manière itérative .find
abord une liste de fichiers avant d' exécuter l'-exec
instruction? Je suppose que oui, mais je veux clarifier ce point avant de coder des boucles infinies.-not -name "*.*"
fera l'affaire.cela trouvera les fichiers sans extension et ajoutera votre .jpg
la source
C'est un peu tard, mais j'ai pensé ajouter qu'une meilleure solution (bien que peut-être moins lisible) que celles jusqu'à présent pourrait être:
En utilisant le
find | xargs
modèle 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 de rename trouvée dans les distributions à saveur Debian (aka prename), plutôt que le renommage traditionnel. C'est juste un minuscule script perl, donc il serait assez facile d'utiliser la commande ci-dessus sur n'importe quel système.
la source
comme ça,
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 souhaitez exécuter la commande à partir d'un autre répertoire,
vous pouvez remplacer le
find .
parfind /target/directory
.la source
-type
.Pour renommer tous les fichiers sans extension dans Windows Basic, vous pouvez le faire
ren * *.jpg
Puisque le fichier n'est pas une extension, utilisez simplement le *, ou si vous voulez changer png en jpg, utilisezren *.png *.jpg
la source
rename
Je ne suis pas sûr qu'il puisse renommer des fichiers sans extensions (je suis sous Windows 7 en ce moment)
la source
rename
, l'une un programme C inclus dans util-linux-ng et l'autre un programme Perl (par Wall lui-même) sur les machines Debian de notre université. En fait, aucun des deux ne fait de récursivité.