![如何解压文件名开头带有连字符的文件](https://linux22.com/image/1635248/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%8E%8B%E6%96%87%E4%BB%B6%E5%90%8D%E5%BC%80%E5%A4%B4%E5%B8%A6%E6%9C%89%E8%BF%9E%E5%AD%97%E7%AC%A6%E7%9A%84%E6%96%87%E4%BB%B6.png)
我有一个 Zip 文件,其名称开头有一个连字符,比如说'- stuff.zip'
如果我需要移动或复制文件,这意味着我需要使用双连字符,以便文件名不会被解释为选项:
cp -- '- stuff.zip' '- stuff2.zip'
但是,如果我尝试对此文件使用 unzip 解压缩,则不起作用:
unzip -l -- '- stuff.zip'
error: -fn or any combination of -c, -l, -p, -t, -u and -v options invalid
我尝试了所有我能想到的单引号、双引号、反斜杠、变量中的文件名组合,但都无法成功。我无法重命名文件,因为脚本将在只读文件系统上运行。
确实有效的一件事是使用 find :
find -maxdepth 1 -name '- stuff.zip' -exec unzip -l {} \;
但是很不方便。
答案1
- stuff.zip
尝试使用以下方法添加前缀./
:
unzip -l './- stuff.zip'
或者使用这种不需要引号(单引号或双引号)但会转义连字符后的空格的方法:
unzip -l ./-\ stuff.zip