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
  • &全体のパターンです。

関連情報