xargsの後にcpが機能しない

xargsの後にcpが機能しない

私はHost 64ビットとvirtualbox 32ビットでdebian jessieを実行しています。トラフィックを節約するために、i386パッケージをホストシステムから共有フォルダにコピーして、virtualboxで使用できるようにしました。

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

私が探しているパッケージを示しています。しかし、私は努力します。CPその後パラメータ

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

何が間違っているのかわかりません。この方法は可能ですか?

問題はスクリプトを書けないことです。これもできます

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

私はホストを台無しにしたくなかったので、そうしませんでした。

ベストアンサー1

現在の問題をどのように解決するかをすでに知っていても、質問に回答しますxargs

xargsコマンドの最後に文字列を入れます。あなたの場合は、最後の引数の前に対応する文字列が必要ですcp-Iオプションを使用してxargsコマンドを設定します。このように:

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

この例では、toを{}代替文字列として使用するため、構文は似ていますfind

おすすめ記事