나는 다음과 같이 코딩했다.
$ find . -maxdepth 1 -name '*.jpg' | head -n 100 | xargs -0 {} cp {} /home/rachael/backup
오류는 다음과 같습니다.
xargs: {}: No such file or directory
내 코드에 어떤 문제가 있으며 어떻게 수정하나요?
답변1
Steeldriver가 명령에서 몇 가지 문제를 식별했습니다., 그러나 쉘을 사용하여 더 짧은 솔루션을 추가하고 싶었습니다 zsh
(질문이 하나의 쉘에만 국한되지 않기 때문에).
cp -- *.jpg(.[1,100]) ~rachel/backup
현재 디렉토리에서 와일드카드 패턴과 일치하는 처음 100개의 일반 파일(사전순)을 복사합니다 *.jpg
.
수정 타임스탬프를 기준으로 가장 오래된 100개의 파일의 경우 가장 최근에 수정된 100개의 파일을 가져오려면 대신 *.jpg(.Om[1,100])
소문자를 사용하고 사용하세요 . 파일 이름의 숫자 순서를 가져오는 대신 in을 사용 하고 숨겨진 이름과 일치하도록 추가합니다.o
O
n
Om
D
답변2
몇 가지:
-I
명령에서 수행되는xargs
작업을 알려주는 이 누락되었습니다.{}
-0
널로 구분된 입력을 예상xargs
하지만 줄바꿈으로 구분된 입력을 전달하고 있음을 나타냅니다.
그래서
find . -maxdepth 1 -name '*.jpg' -print0 | head -zn 100 | xargs -0 -I{} cp {} /home/rachael/backup
GNU 버전이 있는 경우 cp
대체 형식을 사용해야 할 수도 있습니다.
find . -maxdepth 1 -name '*.jpg' -print0 | head -zn 100 | xargs -0 cp -t /home/rachael/backup