同様の種類の.csvファイルを1つにまとめ、新しいファイルを作成せずに行数を計算する方法[閉じる]

同様の種類の.csvファイルを1つにまとめ、新しいファイルを作成せずに行数を計算する方法[閉じる]

私のフォルダには、aca1.csv、aca2.csv、aca3.csv、team1.csv、team2.csv、team3.csvという6つの.csvファイルがあります。各ファイルには80、90、60、70、80、および90行があります。ファイルとそのタイプを結合またはマージするbashスクリプトファイルが必要です。たとえば、aca1,aca2,aca3 は aca タイプです。行値を計算します(単に行数を計算したいので、マージされた新しいファイルを作成せず)。ファイルの数と種類を別の.csvファイルに書き込みます。知っている人がいたら助けてください?

ベストアンサー1

<pattern><number>.<extension>abc1.csv、abc02.csv、abc123.csvというファイルに対して機能する次のbashスクリプトを試してください。オプションで、入力ディレクトリ(デフォルト:.)を最初のコマンドライン引数として提供し、ファイル拡張子(デフォルト:csv)を2番目の引数として指定できます。もちろん、$2を指定するには、$1を強制する必要があります。

$ cat ./countlinesbyfilecategory.sh
#!/bin/bash

ptrns=$(for fnm in `find ${1:-.} -regex ".*[0-9][0-9]*\.${2:-csv}"`; do echo $fnm | sed "s/[0-9][0-9]*\.${2:-csv}$//" ; done| sort -u)

for ptrn in $ptrns; do
        echo -n $(basename $ptrn) " "
        find ${1:-.} -regex "${ptrn}[0-9][0-9]*\.${2:-csv}" | xargs wc -l | tail -1 | awk '{print $1}'
done

$

おすすめ記事