Vous essayez de renommer une série de fichiers sur un serveur Linux. Trouver les fichiers que je veux est facile:Renommer une série de fichiers
find . -type f -wholename \*.mbox
Bien sûr, étant des fichiers mbox, certains d'entre eux ont des espaces dans les noms, il devient:
find . -type f -wholename \*.mbox -print0
Je suis conduite à xargs de telle sorte que Je peux renommer les fichiers:
find . -type f -wholename \*.mbox -print0 | xargs -0 -I{} echo ${"{}"/.mbox/}
L'écho devrait retourner quelque chose comme INBOX, étant donné INBOX.mbox, cependant, bash se plaint:
bash: ${"{}"/.mbox/}: bad substitution
Comment puis-je résoudre ce problème? Je voudrais essayer de le garder dans une solution find/xargs si possible, de sorte que je n'ajoute pas beaucoup de constructions en boucle autour d'elle.
Un avantage supplémentaire à cette solution est que si vous laissez le '' | sh' à la fin vous obtenez une liste de commandes qui seront exécutées. Si tout a l'air ok, vous pouvez ensuite le rediriger vers le shell à exécuter. –
Oui, bon point. Je redirige toujours vers moins pour voir si les commandes sont sensées lors de l'exécution de commandes de cette façon. – hlovdal
J'ai remarqué que la tuyauterie droite vers une coque comme montré est également supérieure à l'utilisation de xargs car elle gère intuitivement les citations, elle est également susceptible d'offrir de meilleures performances. Merci @hlovdal – rupert160