Ans*_*hen 0 zsh zip escape-characters
这感觉像是一项非常简单的任务,但我无法让它发挥作用。我想将目录中的前 13 个文件放入.zip
存档中。这样做的明显方法是
zip first13.zip $(ls | head -n 13)
Run Code Online (Sandbox Code Playgroud)
但这失败了,因为某些文件名 - 由于愚蠢的制度原因我无法更改 - 中有空格。替换ls
withls --quoting-style=shell-always
无济于事(它实际上让事情变得更糟,因为不知何故zip
最终会寻找以文字'
字符开头和结尾的文件,但仍然解析空格......)而且也没有
ls | head -n 13 | xargs zip first13.zip
Run Code Online (Sandbox Code Playgroud)
再次zip
解析空格。
奇怪的是,zip all.zip ./*
工作正常,很明显,某种转义是可能的,但我不知道如何复制zsh
其通配符中的任何内容。
如果有多个版本zip
,我的版本是 Arch Linux 官方zip
软件包中的一个,并将自己标识为Copyright (c) 1990-2008 Info-ZIP
. 外壳是zsh
5.8 版。
由于您正在使用zsh
,您应该能够使用表单的glob 限定符[m,n]
来选择一系列匹配项 - 完全避免head
管道(及其隐式空格拆分):
zip first13.zip ./*([1,13])
Run Code Online (Sandbox Code Playgroud)
查看man zshexpn
更多详情