OVH Cloud OVH Cloud

find et mv

3 réponses
Avatar
Laurent
Bonjour

je cherche avec find à déplacer tout les fichiers d'extensions *.txt
vers le répertoire move, je bloque cependant avec les arguments de mv:

$ find . -name "*.txt" -print -exec mv (?) move/ {} \;

Cordialement

--
Laurent

3 réponses

Avatar
Stephane Chazelas
2004-08-05, 11:23(+00), Laurent:
[...]
je cherche avec find à déplacer tout les fichiers d'extensions *.txt
vers le répertoire move, je bloque cependant avec les arguments de mv:

$ find . -name "*.txt" -print -exec mv (?) move/ {} ;


find . -name "*.txt" -print -exec mv '{}' move ;


Avec zsh:

mv ./**/*.txt move

--
Stephane

Avatar
Stephane Dupille
Bonjour


Salut !

je cherche avec find à déplacer tout les fichiers d'extensions *.txt
vers le répertoire move, je bloque cependant avec les arguments de mv:
$ find . -name "*.txt" -print -exec mv (?) move/ {} ;



$ find . -name "*.txt" -exec mv -v {} rep_dest/ ;
devrait convenir.

Sinon, il doit y avoir une solution avec xargs, mais je sèche un
peu...

--
je pense q'iCQ est peut etre mal vu, aussi car il est un concurrent,
non controlable, des NG. Les pirates peuvent echanger les informations
qu'ils veulent par icq et cela peut deranger.
-+- SP in <http://www.le-gnu.net> : Aïe c'est cuit pour icq -+-

Avatar
Stephane Chazelas
2004-08-05, 13:52(+02), Stephane Dupille:
[...]
$ find . -name "*.txt" -exec mv -v {} rep_dest/ ;
devrait convenir.

Sinon, il doit y avoir une solution avec xargs, mais je sèche un
peu...


Ca devient plus compliqué si on veut accepter tous les noms de
fichiers possibles:

find .//. -name '*.txt' -print |
sed 's/./&/g' | awk '
{
if (NR > 1) {
printf "%s", line
if ($0 !~ ////) printf ""
printf "n"
}
line = $0
}
END { print line }' | xargs sh -c '
shift "$1"
[ "$#" -eq 0 ] && exit
exec mv "$@" rep_dest' 2 1

L'interet, c'est que ca va executer moins de mv, mais les find
POSIX conformant peuvent faire:

find . -name '*.txt' -exec sh -c '
shift "$1"
[ "$#" -eq 0 ] && exit
exec mv "$@" rep_dest' 2 1 '{}' +

--
Stephane