bashからすべてのサブディレクトリを読み込み、そのファイルを作成する方法は?

bashからすべてのサブディレクトリを読み込み、そのファイルを作成する方法は?

A2つの主なディレクトリ、すなわちとがありますB。各ディレクトリには、ランダムに名前が付けられた100個のサブディレクトリ(a1、a2、..、b1、b2、...)が含まれています。これらのサブディレクトリにはXY特定の種類のファイルが含まれています。X特定のサブディレクトリの値は同じですa1が、b1Yが異なります。これで、単純なコマンドなどを使用して、サブディレクトリ列間の違いのみをXY含むYタイプファイルを作成できます。しかし、bashループを使用してすべてのサブディレクトリに対してこれを行う方法がわかりません。各ディレクトリには、タイプファイルが含まれ、タイプファイルがディレクトリ1、ディレクトリ2、..、およびディレクトリ100に含まれるディレクトリ1、2、..を生成するための必須スクリプトが必要です。私は初めてbashに触れたので、マイナーな質問についてお詫び申し上げます。YY = Y1(a1) - Y2(b1)awkXYXYX Y(a1-b1)X Y(a2-b2)X Y(a100-b100)

例は次のとおりです。 2つのホームディレクトリがありますA。サブディレクトリがあり、サブディレクトリがあります。BA0.3427/ 0.3514/ 0.3543/ 0.3792/...B0.4011/ 0.4014/ 0.4031/ 0.4357/...

0.3427/サブディレクトリにはAデータファイルが含まれています。

0.00 -8.79583
50.00 -8.79621
100.00 -8.79961
150.00 -8.80721
200.00 -8.81845
250.00 -8.83271
300.00 -8.8495

サブディレクトリ0.4011 にはデータファイルが含まれています。

0.00 -8.78888
50.00 -8.78954
100.00 -8.79458
150.00 -8.80459
200.00 -8.81852
250.00 -8.83561
300.00 -8.85529

次のデータを含むファイルがディレクトリに存在する必要があります1data.dat

0.00 0.00695
50.00 0.00667
100.00 0.00503
150.00 0.00262
200.00 -7e-05
250.00 -0.0029
300.00 -0.00579

この必須ファイルは、の最初のサブディレクトリ列の違いdata.datにすぎず、コマンドを使用して生成できます。Y今、他のすべてのサブディレクトリに対して同じことをしたいと思います。ファイル内のディレクトリの場所に、ofやofなどの列の違いを含める必要があります。ABawk/pasteAB2data.datY0.3514/A0.4014/B

ベストアンサー1

この試み。

#!/bin/bash

# Run it in the folder containing dir A and dir B.

A=A #first dir, replace with the propper name
B=B #second dir, replace with the propper name
in_file=f #replace with propper name
out_file=data.dat

B_subs=( $(ls B | sort -n) )

i=0
cd "$A"
for d in $( ls | sort -n) ; do
    a="$d"/"$in_file"
    b=../"$B"/"${B_subs[$i]}"/"$in_file"
    ((i++))
    mkdir ../"$i"
    # the one below is not correct, but gives your results
    # join "$a" "$b" | awk '{print $1, $3-$2}' > ../"$i"/"$out_file"
    # the one below is correct
    join "$a" "$b" | awk '{print $1, $2-$3}' > ../"$i"/"$out_file"
done

おすすめ記事