当我执行 unzip -l zip文件名
时,我看到:
1295627 08-22-11 07:10 A.pdf
473980 08-22-11 07:10 B.pdf
...
我只想看到文件名。我尝试了这个
unzip -l zipFilename | cut -f4 -d" "
但我认为分隔符不仅仅是" "
。
假设文件名中没有空格:
unzip -l filename.zip | awk '{print $NF}'
我的解压输出包含头部和尾部,所以 awk 脚本如下:
unzip -l filename.zip | awk '/-----/ {p = ++p % 2; next} p {print $NF}'
处理文件名中含有空格的版本:
unzip -l filename.zip | awk '
/----/ {p = ++p % 2; next}
$NF == "Name" {pos = index($0,"Name")}
p {print substr($0,pos)}
'
awk
脚本呢?如果你没有时间也完全理解。 - Thang PhamNF
变量,它表示字段数量。$NF
是最后一个字段的值,因此这就是如何获取文件名的。第二个脚本通过在出现带有"-----"的第一行时将变量p
设置为true,只有当p
为true时才执行{printf $NF}
块。 - glenn jackmanunzip -l -qq filename.zip
。然后更简单的 awk 语句就能发挥作用了。 - amicitas如果你需要处理带有空格的文件名,可以尝试使用以下方法:
unzip -l zipfilename.zip | awk -v f=4 ' /-----/ {p = ++p % 2; next} p { for (i=f; i<=NF;i++) printf("%s%s", $i,(i==NF) ? "\n" : OFS) }'
使用awk:
unzip -l zipfilename | awk '{print $4}'
-f7
。如果文件名的位置固定,请改用-b
。 - Kerrek SB