renomeando arquivos binários em vários subdiretórios usando o awk

0

Sou muito novo em programação, então fique comigo. Eu tenho tentado há algum tempo agora sem sucesso para renomear vários arquivos que estão localizados entre vários subdiretórios. Alguns antecedentes: os arquivos estão em formato binário e contêm dados sísmicos a partir de 2000. Eu baixei todos os dados e os coloquei em um diretório "seren". Os dados baixados são separados em subdiretórios diferentes rotulados por data e hora, ou seja, Event_2000_01_08_16_47_20. Em cada um desses subdiretórios existem vários arquivos do formato (ou alguma variação de) CN.FRB..BHE.sac, alguns se parecem com II.BORG.00.BHN.sac (essencialmente do formato é NETWORK.STATION .. CHANNEL.sac).

Estou tentando escrever um script bash que percorra todos os subdiretórios Event * e renomeie os arquivos * .sac como SKS. $ {NETWORK}. $ {STATION}. $ {CHANNEL} .SAC - essencialmente removendo a parte 00 no meio (não tenho certeza do que isso significa)

Agradecemos antecipadamente por qualquer ajuda!

até agora, meu código parece:

#!/bin/bash
for all in ~/seren/Event*
do
cd "$all"
pwd
echo "ls | awk -F "." '{print $1}'"  ### this is me attempting to grab the network name to add onto the new file name
done
###### in place of the echo line above I have also tried:
network = $((ls | awk -F "." '}print $1}'))
    
por ldorchester12 15.10.2016 / 20:25

1 resposta

1

Não awk usado. Não tenho certeza se isso era uma exigência ou não. Coloque esse script no mesmo diretório que os diretórios Event_* .

#!/bin/sh    
# Find *.sac files with 00 in the name and remove that part.

LIST='find ./ -mindepth 2 -type f -name \*.00.\*.sac'

for f in $LIST
do
    dir=${f%/*}
    fName=${f##*/}
    # remove the file ext as well
    fName=${fName%.*}
    # remove the 00 from the file name
    nName='echo $fName | sed 's/.00././''
    # DEBUG MODE
    echo "f:[${f}] d:[${dir}] n:[SKS.${nName}.SAC]"
    # LIVE
    #mv -vf "${f}" "${dir}/SKS.${nName}.SAC"
done

Altamente sugiro que você execute isso em um grupo de back-up / teste primeiro:]

    
por 16.10.2016 / 06:03