Опция -t
(расширение GNU )принимает аргумент, который является целевым каталогом.
С помощью xargs -0 cp -vt -- target/
это попытается скопировать target/
и выбранные файлы в каталог с именем --
, и вы все равно не пометите конец опций. Вам также нужно будет отметить конец опций для shuf
.
{}
является специальным только с предикатом find
и -exec
или с xargs
, если вы используете -I'{}'
, но здесь он вам не нужен. shuf
не имеет предиката -exec
.
Вот вам бы:
shuf -zen8 -- *.jpg | xargs -r0 cp -vt target --
Или
shuf -zen8./*.jpg | xargs -r0 cp -vt target
Вместе с zsh
вы также можете использовать его e
xpression -на основе o
квалификатора rdering glob:
cp -v -- *.jpg(oe['REPLY=$RANDOM'][1,8]) target/
Это имеет преимущество перед shuf
подходом к работе на любой системе, (при условии, что zsh
установлена; вам может потребоваться отказаться от нестандартного --v
в некоторых системах ), а также продолжать работать, даже если в текущем каталоге (есть два множества jpg
файлов и выполнение shuf
будет сбой с ошибкой Слишком много аргументов ).