web-dev-qa-db-fra.com

Comment puis-je supprimer tous les guillemets simples dans tous les fichiers de manière récursive en utilisant `rename`?

Le titre dit tout et oui, je sais qu'il y a beaucoup de questions similaires, mais le plus proche que j'ai pu trouver était de supprimer "et non". Ce que j'ai essayé jusqu'à présent est:

find -name "*'*" -type f | rename 's/\'//g'

ou rename 's/[']//g' et quelques autres variations. Je trouve tous les fichiers, mais lorsque je le rediffuse sur rename, je reçois simplement >for Prompt et je dois le faire. Ctrl+C rendre. J'ai récemment changé beaucoup de fichiers avec cela, et cela a fonctionné comme un charme sur n'importe quel caractère spécial, à l'exception des guillemets simples.

3
Thomas

Vous pouvez utiliser des guillemets doubles:

rename -n "s/'//g"

remove -n après le test pour renommer les fichiers en réel

Utilisez -exec bien que ...

find -name "*'*" -type f -exec rename -n "s/'//g" '{}' \;

Si la liste n'est pas trop longue, accélérez ...

find -name "*'*" -type f -exec rename -n "s/'//g" '{}' +
7
Zanna