Renommer tous les fichiers dans un dossier avec un préfixe en une seule commande unix
Renommer tous les fichiers dans un dossier avec le préfixe “Unix_” c'est à dire supposons qu'un dossier a deux fichiers a.txt et b.pdf, alors ils devraient être renommé à partir d'une seule commande pour Unix_a.txt et Unix_b.pdf
- suivez ce lien => cyberciti.biz/astuces/...
- vérifiez ici:theunixshell.blogspot.com/2013/01/...
Vous devez vous connecter pour publier un commentaire.
Si vos noms de fichiers contiennent des pas whitepace et vous n'avez pas de sous-répertoires, vous pouvez utiliser un simple
for
boucle:Sinon l'utilisation de la pratique
rename
de commande (qui est un script perl) - bien qu'il pourrait ne pas être disponibles hors de la boîte sur tous les Unix (par exemple, OS X ne vient pas avecrename
).Un bref aperçu à debian-administration.org:
Si vos noms de fichiers contiennent des espaces, c'est plus facile à utiliser
find
, sur Linux, la suivante devrait fonctionner:Sur les systèmes BSD, il n'y a pas de
-printf
option, malheureusement. Mais GNU findutils doit être installable (sur, par exemple, Mac OS X avecbrew install findutils
).find
.for f in *; do [[ -f ${f} ]] && mv ...; done
à attraper des fichiers (pas de sous-répertoires, liens, etc...)...for FILENAME in *; do mv "$FILENAME" "Unix_$FILENAME"; done
fonctionne correctement indépendamment de ce que de caractères dans les noms de fichier. Il ne déplacer des répertoires, des sockets, des liens symboliques et d'autres types de fichiers trop; je présume que ce n'est pas grave.Essayer le
rename
commande dans le dossier avec les fichiers:L'argument de renommer (sed s commande) indique de remplacer l'expression rationnelle ^ avec Unix_. L'accent circonflexe (^) est un caractère spécial qui signifie début de la ligne.
's/^/.../'
signifie?rename: command not found
sur un Mac 🙁Je pense que c'est tout ce que vous er à la recherche:
Oui, il est simple, élégant et puissant, et alos oneline-comand de courese.
Vous pouvez obtenir plus de détails intro de moi sur la page:Renommer des Fichiers et des Répertoires (Ajouter un Préfixe)
ls
— il peut causer des problèmes si il y a des espaces ou d'autres personnages déjantés dans les noms de fichier.J'ai récemment été confronté à ce même situation et trouvé plus facilement intégré de la solution. Je le partage ici, de sorte qu'il peut aider d'autres personnes à la recherche d'une solution.
Avec OS X Yosemite, Apple a intégré le renommage par lots capacités directement dans le Finder. Détails de l'information est disponible ici. J'ai copié les étapes ci-dessous ainsi,
Renommer plusieurs éléments
Sélectionnez les éléments, puis cliquez sur l'une d'entre eux.
Dans le menu contextuel, sélectionnez Renommer des Éléments.
Dans le menu déroulant ci-dessous Renommer les Éléments du Dossier, choisir de remplacer du texte dans les noms, ajouter du texte à des noms, ou de modifier le format de nom.
Remplacer du texte: Saisissez le texte que vous souhaitez supprimer dans le champ Rechercher, puis saisissez le texte que vous souhaitez ajouter dans la “Remplacer par”.
Ajouter du texte: Saisissez le texte que vous souhaitez ajouter dans le champ, puis choisissez d'ajouter du texte avant ou après le nom actuel.
Format: Choisissez un format de nom pour les fichiers, puis choisissez mettre à l'index, d'un comptoir, ni de date avant ou après le nom. Entrez un nom dans le Format Personnalisé champ, puis entrez le numéro que vous voulez commencer avec.
Cliquez Sur Renommer.
Si vous avez un modèle courant de vos fichiers que vous pouvez utiliser Remplacer le texte sinon Ajouter du texte serait aussi faire le travail.
Vous pouvez simplement utiliser
-i
au lieu de-I {}
Cela fonctionne aussi parfaitement.
ls
- répertorie tous les fichiers dans le répertoirexargs
- accepte tous les fichiers ligne par ligne en raison de la-i
option{}
est l'espace réservé pour tous les fichiers, si nécessairexargs
obtient plus que deux arguments en entréeUtilisation de awk:
-i
est obsolète, maintenant, c'est juste-I
Fonctionne également pour les éléments avec des espaces et ignore les répertoires
Avec rnm (vous aurez besoin de l'installer):
Ou
P. S : je suis l'auteur de cet outil.
rename
ne fonctionne pas pour moi, maisrnm
n'.Situation:
Nous avons
certificate.key
certificate.crt
à l'intérieur de/user/ssl/
Nous voulons renommer tout ce qui commence par
certificate
àcertificate_OLD
Nous sommes maintenant situé à l'intérieur de
/user
Tout d'abord, vous faire un essai avec
-n
:rename -n "s/certificate/certificate_old/" ./ssl/*
Qui retourne:
rename(./ssl/certificate.crt, ./ssl/certificate_OLD.crt)
rename(./ssl/certificate.key, ./ssl/certificate_OLD.key)
Vos fichiers seront inchangés, c'est juste un essai.
Solution:
Lorsque votre heureux avec le résultat de l'essai de marche pour de vrai:
rename "s/certificate/certificate_OLD/" ./ssl/*
Ce que cela signifie:
"rename "s/quelque CHOSE /SOMETING_ELSE" CHEMIN/FICHIERS
Astuce:
Si vous êtes déjà sur le chemin de l'exécuter comme ceci:
rename "s/certificate/certificate_OLD/" *
Ou si vous voulez le faire dans n'importe quel sous-répertoire avec
ss
faire:rename -n "s/certificat/certificate_old/" ./ss*/*
Vous pouvez également le faire:
rename -n "s/certi*/certificate_old/" ./ss*/*
Qui renomme tout ce qui commence par
certi
dans un sous-répertoire de départ avecss
.Le ciel est la limite.
Jouer avec les regex et tester en AVANT avec
-n
.ATTENTION CE SERA MÊME RENOMMER LES NOMS DE DOSSIER CORRESPONDANT.
Mieux
cd
dans le répertoire et de le faire là.UTILISEZ À VOTRE PROPRE RISQUE.