my previous questionにリンクすると、この問題は完全には解決されないことがわかりました。Bash:列の最大値からファイルに再帰的に行を書き込む
RUN1
、RUN2
、RUN3
という名前のディレクトリがあります。各ディレクトリにはいくつかのファイルがあります。ディレクトリRUN1
には、mod1_1.csv
,mod1_2.csv
,mod1_3.csv
というファイルがあります。 RUN2、mod2_1で
5.73 6.43 5.76 6.57
5.79 6.20 5.10 7.01
5.71 6.21 5.34 6.81
:
5.71 6.66 5.52 6.90
5.78 6.69 5.55 6.98
5.77 6.63 5.73 6.91
そしてmod1_2.csv
は次のようになります。ディレクトリRUN2
はmod1_1.csv
ファイルのファイルmod2_1.csv
、mod2_2.csv
、mod3_3.csv
など
内容は次のようになります。 CSVは次のようになります。
5.72 6.29 5.39 5.59
5.71 6.10 5.10 7.34
5.70 6.23 5.23 6.45
そしてmod2_2.csv次のようになります。
5.72 6.29 5.39 5.69
5.71 6.10 5.10 7.32
5.70 6.23 5.23 6.21
私の目標は、各RUNの*ディレクトリの列4の最小値を持つ行を取得し、それを書くことで、新たなにそれを与えたモデル.csvファイル。今、私はこのコードを持っている:
#!/bin/bash
resultfile="best_results_mlp_2.txt"
for d in $(find . -type d -name 'RUN*' | sort);
do
find $d -type f -name 'mod*' -exec sort -k4 {} -g \; | head -1 >> "$resultfile"
done
しかし、それは常に列4の最小値を返しません(私は、ファイルを経て、確認を)、それが含まれているファイル名が含まれていません。最小番号。明確にするために、私はこれらの内容を.csvファイルたい:
5.73 6.43 5.76 6.57 mod1_2.csv
5.72 6.29 5.39 5.59 mod2_1.csv
代わりからわずかパスの全体のパスを取得する方法はありますこのディレクトリに?たとえば、私のbashファイルが/ dir1/dir2に保存されていて、新しい.csvファイルの最後の列として/dir1/dir2/RUN1/mod1_1.csvというパスが必要な場合です。 – StatsSorceress
または、新しい.csvファイルの最後の列として/dir2/RUN1/mod1_1.csvのような、現在のパスのサブセット。 – StatsSorceress
'find'はファイルが見つかったパスを渡します。したがって、 ''/path/to/$ d "'で検索すると、 '' /path/to/$d/filename.csv "'となります。取得したいパスで 'find'検索を行います。 – dgeorgiev