10
votes

Comment ajouter une extension .xml à tous les fichiers d'un dossier à UNIX / Linux

Je veux renommer tous les fichiers d'un dossier et ajouter un extension .xml . J'utilise UNIX. Comment puis-je faire ça?


2 commentaires

Ces tags créent une confusion. Voulez-vous faire cela dans PHP, Python ou Shell Unix?


Renommer 'S / $ / \. XML /' * Référence: askubuntu.com/a/74368


4 Réponses :


2
votes

dans python :

Utiliser os.listdir pour rechercher des noms de tous les fichiers d'un répertoire. Si vous avez besoin de récursivement Rechercher tous les fichiers des sous-répertoires également, utilisez os.walk à la place. Son API est plus complexe que os.listdir mais il fournit des moyens puissants des répertoires de marche récursive.

Utilisez ensuite os.rnerame pour renommer les fichiers.


1 commentaires

@Web Developer: Avez-vous venu -1 -1 me pour vous fournir une réponse? Sérieusement?



21
votes

sur la coquille, vous pouvez le faire:

find . -type f -exec mv {} {}.xml ';'


4 commentaires

Comment puis-je le faire de manière récursive sur tous les sous-répertoires aussi


Utilisez trouver pour trouver les fichiers; trouver. -Type f -exec mv {} {} .xml ';' .


Aussi, s'ils ont déjà une extension .xml, je ne veux pas qu'ils soient renommés


Oui, ne laissez pas emporter pour changer la question dans les commentaires. Découvrez tldp.org/ldp/abs/html/string-manipulation.html < / a> Pour voir comment tester si votre nom de fichier correspond à un ".xml" à la fin.



4
votes

Je ne sais pas si c'est standard, mais mon package perl / usr / bin / préname (et un symboliste juste Renommer ) qui n'a pas d'autre objectif: xxx


3 commentaires

Comment puis-je le faire de manière récursive sur tous les sous-répertoires, mais pas sur les fichiers .xml. c'est-à-dire des fichiers qui ne sont pas déjà renommés


Avec $ (recherche -TYpe f) au lieu de * . Et adapter la regex avec une affirmation s / (?


Vous pouvez utiliser Rename avec -n Drapeau pour tester comment le renommage serait sans renommer les fichiers.



3
votes
find . -type f \! -name '*.xml' -print0 | xargs -0 rename 's/$/.xml/'

0 commentaires