2017-05-22 2 views
-1

J'utilise l'outil de ligne de commande renommer Linux pour rechercher récursivement dans un répertoire pour renommer tous les répertoires ainsi que les fichiers qu'il trouve. Le problème que je rencontre est que la commande rename renomme un sous-répertoire d'un fichier puis tente de renommer le répertoire parent du même fichier. Cela échouera parce que le sous-répertoire a été renommé pour résultat un « Aucun fichier ou répertoire »Utilisation de renommer pour renommer des fichiers et des répertoires

Commande:

rename -f 's/foo/bar/' ** 
rename -f 's/Foo/Bar/' ** 

Par exemple, voici un fichier original que je voudrais remplacer « foo 'avec 'bar'

fichier:

/test/foo/com/test/foo/FooMain.java 

échec:

Can't rename /test/foo/com/test/foo/FooMain.java /test/bar/com/test/foo/FooMain.java: No such file or directory 

fichier préféré:

/test/bar/com/test/bar/BarMain.java 

Vous pouvez voir le message d'erreur qu'il est tentant de renommer le répertoire parent mais à ce moment-là le sous-répertoire a déjà été modifié résultant dans le fichier introuvable erreur. Y a-t-il des paramètres pour la commande renommer qui vont résoudre ce problème ou est-ce que je dois y aller d'une manière différente?

+1

est SO pour des questions de programmation, pas de questions sur l'utilisation des outils Unix. Unix.stackexchange.com ou SuperUser.com serait plus approprié. – Barmar

+0

Déplacé vers https://unix.stackexchange.com/questions/366780/using-rename-to-rename-files-and-directories – Bobbake4

Répondre

0

Utilisez + execdir trouver l'option:

$ find . -execdir rename "s/foo/bar/" {} \; 
$ find . -execdir rename "s/Foo/Bar/" {} \;