使用awk解压目录中的文件

使用awk解压目录中的文件

当我需要将每个文件解压到我使用的特定目录中时,我的目录中有一些 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
  • &是整个图案

相关内容