이것은 매우 간단한 작업처럼 느껴지지만 제대로 작동할 수는 없습니다. 디렉토리의 처음 13개 파일을 아카이브에 넣고 싶습니다 .zip
. 이를 수행하는 확실한 방법은
zip first13.zip $(ls | head -n 13)
그러나 일부 파일 이름(어리석은 제도적 이유로 변경할 수 없음)에 공백이 있기 때문에 실패합니다. 다음 ls
으로 바꾸는 것은 도움이 되지 않습니다. (어쨌든 리터럴 문자로 시작하고 끝나는 파일을 찾게 되지만 여전히 공백을 구문 분석하기 때문에 ls --quoting-style=shell-always
상황이 더 악화됩니다 ...) 둘 다 도움이 되지 않습니다.zip
'
ls | head -n 13 | xargs zip first13.zip
이번에도 zip
공백이 구문 분석됩니다.
이상하게도 zip all.zip ./*
잘 작동하고 너무 명확해요일부zsh
일종의 이스케이프가 가능하지만 와일드카드에 있는 항목을 복사하는 방법을 모르겠습니다 .
여러 버전이 있는 경우 zip
내 버전은 공식 Arch Linux 패키지에 있는 버전이며 zip
셸 Copyright (c) 1990-2008 Info-ZIP
버전 zsh
은 5.8입니다.
답변1
을(를) 사용하고 있으므로 zsh
사용할 수 있어야 합니다.글로벌 예선[m,n]
일치 범위를 선택하는 형식 - head
파이프(및 암시적 공백 분할)를 완전히 방지합니다.
zip first13.zip ./*([1,13])
man zshexpn
자세한 내용은 다음을 참조하세요.