当我需要将每个文件解压到我使用的特定目录中时,我的目录中有一些 zip 文件
ls | awk '{ print "unzip " $1 " -d " $1} '
unzip p21286665_121020_Linux-x86-64.zip -d p21286665_121020_Linux-x86-64.zip
unzip p21841318_121020_Linux-x86-64.zip -d p21841318_121020_Linux-x86-64.zip
unzip p22098146_121020_Linux-x86-64.zip -d p22098146_121020_Linux-x86-64.zip
但我需要这样的东西。
unzip p21286665_121020_Linux-x86-64.zip -d p21286665
unzip p21841318_121020_Linux-x86-64.zip -d p21841318
unzip p22098146_121020_Linux-x86-64.zip -d p22098146
答案1
您还可以使用 -F 参数在下划线上分割行,从而最终得到如下结果:
ls | awk -F_ '{print "unzip " $0 " -d " $1; }
答案2
尝试
ls | awk '{ print "unzip " $1 " -d " substr($1,1,index($1,"_")-1) } '
或在 sed 中
ls | sed -e "s/\([^_]*\)_.*$/unzip & -d \1/"
在哪里
[^_]*
是一个非 _ 字符串\(
..\)
捕获纯为\1
&
是整个图案