저는 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
.
답변2
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 구문 분석에 대한 정보