2010-07-09 5 views
0

J'essaie d'écrire une commande simple qui recherche dans un répertoire de musique tous les fichiers d'un certain type et les copie dans un nouveau répertoire. Je serais bien si les fichiers n'avaient pas d'espaces.Comment gérer les espaces dans un script qui utilise les résultats de find dans une boucle for?

J'utilise un script à partir de la question suivante, mais il échoue pour espaces: bash script problem, find , mv tilde files created by gedit

Toutes les suggestions sur la façon dont je peux gérer les espaces, une fois que je suis convaincu que tous les fichiers sont répertoriés, je changerai echo à cp

for D in `find . -name "*.wma*"`; do echo "${D}"; done 

Répondre

1

Vous voulez probablement faire à la place:

find . -name *.wma -exec echo "{}" \; 
+0

qui n'a pas w ork. Pouvez-vous ajouter une explication sur la façon de gérer les espaces? – Eric

+0

N'a pas fonctionné comment? Si vous consultez la page de manuel de find, elle indique: "La chaîne' {} 'est remplacée par le nom de fichier actuel ". Donc, si vous mettez des citations autour, comme dans mon exemple, vous allez gérer les espaces. – vanza

+0

N'a pas fonctionné parce que j'ai négligé le \; et il a continué à me donner un find: -exec: no terminating ";" or "+" Merci pour votre aide – Eric

Questions connexes