Question Comment puis-je trouver tous les fichiers dans un dossier de manière récursive par le nom spécifique et les renommer?


J'ai un arbre de dossiers. Certains d'entre eux contiennent un fichier nommé ".file.php" Comment renommer tous les fichiers portant ce nom récursivement dans l'arborescence à ".file1.php"? Je suis sur le serveur debian.


2
2018-04-05 12:00


origine




Réponses:


La solution complète se présenterait comme suit

find -name '*.file.php' -exec rename 's/\.file\.php$/.file1.php/' {} \;

5
2018-04-05 20:44





as-tu rename sur debian? idk, mais comme il est disponible sur Ubuntu, je suppose que oui.

PRÉNOM          renommer - renomme plusieurs fichiers

SYNOPSIS          renommer [-v] [-n] [-f] perlexpr [fichiers]

LA DESCRIPTION          "renommer" renomme les noms de fichiers fournis selon la règle   spécifié          comme premier argument. L'argument perlexpr est une expression Perl          qui devrait modifier la chaîne $ _ en Perl pour au moins une partie de          les noms de fichiers spécifiés. Si un nom de fichier donné n’est pas modifié par le          expression, il ne sera pas renommé. Si aucun nom de fichier n'est donné sur   la          ligne de commande, les noms de fichiers seront lus via l’entrée standard.

   For example, to rename all files matching "*.bak" to strip the
   extension, you might say

           rename 's/\.bak$//' *.bak

   To translate uppercase names to lower, you'd use

           rename 'y/A-Z/a-z/' *

un exemple copié à partir d'un résultat Google peut déjà être assez proche de ce que vous voulez:

Voici un exemple de la commande rename:

rename -n ’s / .htm $ /. html /’ * .htm

Le -n signifie que c'est un test et   ne changera réellement aucun fichier. Il   vous montrera une liste de fichiers   serait renommé si vous avez supprimé le   -n. Dans le cas ci-dessus, il convertira tous les fichiers du répertoire en cours   d'une extension de fichier de .htm à   .html.

Si la sortie du test ci-dessus est exécutée   semblait ok alors vous pourriez courir la finale   version:

rename -v ’s / .htm $ /. html /’ * .htm

Le -v est optionnel, mais c'est un bon   idée de l'inclure parce que c'est le   seul enregistrement que vous aurez des changements   qui ont été faites par le renommer   commander....


0
2018-04-05 12:07



Comment puis-je le faire récursivement dans une arborescence de dossiers? - die_humans
Ubuntu est Debian - Reuben Swartz
@die_humans: Regardez ici ubuntuforums.org/showthread.php?p=6642616 pour une façon de le faire. une autre façon serait un script shell. - Christoph