客观的:
a.zip使用unzipon命令展开存档后Ubuntu 12.10,将a.zip展开到的文件夹的名称分配给bash变量v。
a.zip 假定并保证扩展到单个文件夹,而不是多个文件夹。
例子:
如果unzip a.zip扩展到文件夹./foo/,echo $v应该返回foo。
我的环境:
GNU/Linux (kernel 3.5.0-25-generic)
Ubuntu 12.10
bash v4.2.37(1)-release
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.
Run Code Online (Sandbox Code Playgroud)
我对当前的解决方法不满意:扩展通过unzip -d bar a.zip然后v=$(ls -1 bar)给出正确的结果,但弄乱了文件系统。
小智 5
干得好:
v=$(unzip a.zip | grep -m1 'creating:' | cut -d' ' -f5-)
Run Code Online (Sandbox Code Playgroud)
解释
$(...)是一个捕获壳。它捕获其中的命令的输出并像变量一样替换它们。unzip命令的输出grep通过管道传送到,它传递参数-m1以使其仅返回第一个结果和 text creating:,它是unzip创建目录时打印到标准输出的文本的一部分。grep打印creating: foo/到标准输出,这是管道cut。cut用于打印第二列之后的所有列(以空格分隔)。我们指定从 5 到行尾,因为这个词creating:前面有几个空格。我们希望使用所有列直到行尾,以防目录名称中有空格。最终输出为foo/.| 归档时间: |
|
| 查看次数: |
4615 次 |
| 最近记录: |