3

ファイルをループしてマスクする Bash スクリプトがあります。ファイルは gzip 圧縮されているため、以下のスクリプトに示すように、引数として Python プログラムに渡す前に、まずそれらを gunzip する必要があります。問題は、変数$iがファイル名の解凍されたバージョンに変わらないことです。解凍前のファイル名はmy-log-1.c.log.gz. 以下のようにファイルに対して gunzip を実行した後、バージョンではなくmy-log-1.c.log、引数としてmasker.shスクリプトに渡したいと思います。.gzどうすればいいですか?

#!bin/bash

cd /home/logs

  for i in *
     gunzip $i
     do
       python masker.py $i  # python program masks files 
     rm $i
     echo "masked_file and removed =  $i"
   done
4

2 に答える 2

3

basename の使用:

for i in; do
  gunzip "$i"
  i=$(basename "$i" .gz)
  python masker.py "$i"  # python program masks files 
  rm $i
  echo "masked_file and removed =  $i"
done

最初の引数はファイル名で、2 番目の引数は削除する拡張子です。

于 2012-12-04T04:09:44.333 に答える
0

以下のプログラムを使用できます。

for i in; do
    gunzip "$i"
    i=$(echo $i|rev|cut -d'.' -f2-|rev)
    python masker.py "$i"  # python program masks files 
    rm $i
    echo "masked_file and removed =  $i"
done
于 2012-12-04T10:39:32.180 に答える