
이것은 매우 간단한 작업처럼 느껴지지만 제대로 작동할 수는 없습니다. 디렉토리의 처음 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
詳細については、次を参照してください。