ls -al /var/cache/apt/archives/ |
grep 'i386' |
awk '{print $9}'
можно упростить до / var / cache / apt / archives / * i386 *
Итак, используйте любой из этих двух:
cp -u /var/cache/apt/archives/*i386* /home/alex/debian-share/apt-archives/
cp -ut /home/alex/debian-share/apt-archives/ /var/cache/apt/archives/*i386*
где
-t, --target-directory=DIRECTORY
copy all SOURCE arguments into DIRECTORY
См. Также информация о парсинге ls
Хотя вы уже знаете, как вам следует решить вашу текущую проблему, я все же отвечу по поводу xargs
.
xargs
помещает полученную строку в конец команды, в то время как в вашем случае вам нужна эта строка перед последним аргументом cp
. Используйте опцию -I
в xargs
для создания команды. Например, так:
ls /source/path/*pattern* | xargs -I{} cp -u {} /destination/path
В этом примере я использую {}
в качестве строки замены, поэтому синтаксис похож на find
.