usando o awk para descompactar arquivos no diretório

0

Eu tenho alguns arquivos zip no diretório quando preciso descompactar cada um em um diretório específico Eu usei

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

Mas eu preciso de algo assim.

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
    
por Khalid Abo El MaGd 14.03.2016 / 09:35

2 respostas

5

Você também pode usar o argumento -F para dividir a linha no sublinhado e, assim, acabar com algo parecido com isto:

ls | awk -F_ '{print "unzip " $0 " -d " $1; }
    
por 14.03.2016 / 09:43
0

tente

ls | awk '{ print "unzip " $1 " -d " substr($1,1,index($1,"_")-1) } '

ou em sed

ls | sed -e "s/\([^_]*\)_.*$/unzip & -d /"

onde

  • [^_]* é uma string não _
  • \( .. \) catpure como
  • & é todo padrão
por 14.03.2016 / 09:42

Tags