cp depois que xargs não estão funcionando

3

Eu executo o debian jessie no Host 64-bit e no virtualbox 32-bit. Para poupar tráfego tento copiar os pacotes i386 do host para a pasta compartilhada, para usá-los no virualbox.

My Hostname/var/cache/apt/archives$ ls -al /var/cache/apt/archives/ |
    grep 'i386' | 
    awk '{print $9}'
alsa-oss_1.0.28-1_i386.deb
gcc-4.9-base_4.9.2-10_i386.deb
i965-va-driver_1.4.1-2_i386.deb
libaacplus2_2.0.2-dmo2_i386.deb
libaio1_0.3.110-1_i386.deb
libasound2_1.0.28-1_i386.deb
libasound2-dev_1.0.28-1_i386.deb
libasound2-plugins_1.0.28-1+b1_i386.deb

Mostra-me os pacotes que estou procurando. mas eu tento cp depois de xargs

My Hostname/var/cache/apt/archives$ ls -al /var/cache/apt/archives/ |
    grep 'i386' |
    awk '{print $9}' |
    LANG=C xargs cp -u /home/alex/debian-share/apt-archives/
cp: target 'zlib1g_1%3a1.2.8.dfsg-2+b1_i386.deb' is not a directory

Eu não consigo descobrir o que estou fazendo errado. É assim mesmo possível?

Meu problema é que eu não consigo escrever script. Provavelmente é algo parecido com isso

for i in *_i386.deb ; do cp [option] full-path to shared-folder

Eu não mequei, porque não vou bagunçar meu Host.

    
por Jeff Schaller 05.03.2017 / 11:18

2 respostas

7
ls -al /var/cache/apt/archives/ |
    grep 'i386' | 
    awk '{print $9}'

pode ser simplificado para /var/cache/apt/archives/*i386*


Então, use um destes dois:

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*

onde

   -t, --target-directory=DIRECTORY
          copy all SOURCE arguments into DIRECTORY


Veja também informações sobre análise ls

    
por 05.03.2017 / 12:26
8

Embora você já saiba como resolver seu problema atual, ainda responderei sobre xargs .

xargs coloca a string no final do comando, enquanto no seu caso você precisa da string antes do último argumento de cp . Use a opção -I de xargs para construir o comando. Assim:

ls /source/path/*pattern* | xargs -I{} cp -u {} /destination/path

Neste exemplo, estou usando {} como uma string de substituição, portanto, a sintaxe é semelhante a find .

    
por 05.03.2017 / 20:02

Tags