Salut,
J'ai un tas de fichiers texte dans une arborescence, et je voudrais les copier
tous dans un même répertoire de destination, comme ceci:
content/foo.txt -> $DEST/foo.txt
content/bar.md -> $DEST/bar.md
content/baz/quux.html -> $DEST/quux.html
content/baz/foobar.rst -> $DEST/foobar.rst
... etc ...
J'ai essayé de faire comme ceci:
find content/ -exec cp -v {} $DEST/`basename {}` ';'
Mais bien entendu, ça n'a pas marché, puisque c'est le shell qui interprétait la
commande basename
et pas find
…
J'ai aussi regardé dans le man
uel de cp
, mais je n'ai pas trouvé d'options
pour ça …
Quelqu'un a une idée ?
Merci d'avance ;-)
# simple
Posté par BFG . Évalué à 8.
Sans utiliser find (avec zsh ou bash) :
[^] # Re: simple
Posté par mrr . Évalué à 1.
Oui, ça marche!
Merci :-)
Envoyé depuis ma Debian avec Firefox
# for ?
Posté par mekare . Évalué à 1.
[^] # Re: for ?
Posté par BFG . Évalué à 2. Dernière modification le 05 juillet 2012 à 18:26.
Cela ne gère pas les noms de fichiers contenant des espaces, dès le
for FILE in `find...`
.[^] # Re: for ?
Posté par mekare . Évalué à 2.
Chez moi ça fonctionne, mais effectivement, problème récurent avec le for.
sinon, une chose comme ça devrait faire l'affaire (je ne l'ai pas vérifié).
[^] # Re: for ?
Posté par BFG . Évalué à 2.
Vous devez parler de la variable
IFS
. Cela échouera encore avec les noms de fichiers contenant des retours à la ligne mais ils sont plus rares.Si l'on veut conserver la boucle for et la commande find, il faut utiliser le caractère nul comme séparateur sûr.
[^] # Re: for ?
Posté par nud . Évalué à 1.
On peut sans doute faire une variante à base de -print0 et de xargs mais j'aime bien le while.
# Tout simplement
Posté par Power . Évalué à -7. Dernière modification le 05 juillet 2012 à 18:19.
for i in $(ls -1 content/); do cp $i DEST/; done
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.