de manière récursive ajouter l'extension de fichier pour tous les fichiers
J'ai un peu de répertoires et sous-répertoires contenant les 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 juste d'en ajouter un. Il doit également être récursive, quelqu'un peut-il aider s'il vous plaît?
Vous devez vous connecter pour publier un commentaire.
Autre commande sans explicite d'une boucle (
homme à trouver
):Explication: ce de manière récursive trouve tous les fichiers (
-type f
), en commençant à partir du répertoire courant (.
) et applique la commande de déplacement (mv
) pour chacun d'eux. Notez également les guillemets autour de{}
, de sorte que les noms de fichiers avec des espaces (et même des retours à la ligne...) sont correctement gérées.for
boucle bouleversant bash pour itérer sur une liste de fichiers, qui n'est pas correct. Le bashfor
boucle itérative questions chaquemv
de commande.find
d'abord mettre en place une liste de fichiers avant, il exécute la-exec
déclaration? J'imagine que oui, mais souhaitez obtenir clair sur ce sujet avant de coder une boucle infinie.-P
) si vous soupçonnez un boucle.-not -name "*.*"
fera l'affaire..sample
versions de fichiers de config 🙂cela permet de trouver des fichiers sans extension et ajouter votre .jpg
C'est un peu tard, mais j'ai pensé que je voudrais ajouter qu'une meilleure solution (bien que peut-être moins lisible) que celles jusqu'ici peut-être:
À l'aide de la
find | xargs
modèle entraîne généralement plus efficace de l'exécution, tant que vous n'avez pas à fourche d'un nouveau processus pour chaque fichier.À noter que cela nécessite la version de renommer trouvé dans Debian à saveur de distributions (aka prename), plutôt que la traditionnelle renommer. C'est juste un petit script perl qui, de ce fait, il serait assez facile d'utiliser la commande ci-dessus sur n'importe quel système.
comme ça,
Je ne m'attendais pas à vous ont séparés par un espace de noms de fichier,
Si vous le faites, les noms doivent être traitées un peu.
Si vous souhaitez exécuter la commande à partir d'un autre répertoire,
vous pouvez remplacer le
find .
avecfind /target/directory
.-type
.Pour renommer tous les fichiers sans extension de base de Windows, vous pouvez le faire
ren * *.jpg
Depuis le fichier sans extension, il suffit d'utiliser l' *, ou si vous souhaitez modifier les png en jpg
utilisation
ren *.png *.jpg
rename
pas sûr que cela peut renommer les fichiers sans extensions (je suis sur windows 7 pour le moment)
rename
, un programme en C inclus dans util-linux-ng et un programme Perl (par le Mur lui-même) de notre université de machines Debian. En fait, aucun des deux ne la récursivité.