web-dev-qa-db-fra.com

Comment renommer une partie d'un fichier à l'aide de la commande find dans les répertoires et sous-répertoires

J'ai beaucoup de fichiers journaux dans un répertoire et son sous-répertoire est nommé dataupload_sales_.xxx.com.dat. Je voulais changer tous les fichiers xxx.com partie à yyy.com dans les répertoires actuels et secondaires.

j'espère que ce n'est pas un article en double car j'ai cherché sur le forum et essayé quelques options mais aucune n'a fonctionné. certains articles ont suggéré d'utiliser le changement de nom et il n'est renommé que dans un seul fichier. où j'ai plus de 5000 sous-répertoires dans mon répertoire et tous les sous-répertoires ont 100+ .dat des dossiers.

j'ai aussi essayé

find ./ -name "xxx.com" -exec bash -c 'mv $0 $(echo "$0" | sed -r \"s|xxx.com|yyy.com|g\")' '{}' \;

il montre une erreur de répertoire non valide

1
Himel

Dans le dossier, vous souhaitez modifier les noms de fichiers de manière récursive:

find . -name '*.xxx.com.dat' -exec rename 's/xxx/yyy/' -- {} +
2
EdiD