A
두 개의 주요 디렉토리, 즉 및 가 있습니다 B
. 각 디렉터리에는 무작위로 이름이 지정된 100개의 하위 디렉터리(a1,a2,.. 및 b1,b2,...)가 포함되어 있습니다. 이러한 하위 디렉터리에는 XY
특정 유형의 파일이 포함되어 있습니다. X
특정 하위 디렉토리에 대한 값은 동일 a1
하지만 b1
값 Y
이 다릅니다. 이제 간단한 명령 등을 사용하여 하위 디렉터리 열 간의 차이점 XY
만 Y
포함하는 유형 파일을 만들 수 있습니다 . 하지만 bash 루프를 사용하여 모든 하위 디렉터리에 대해 이 작업을 수행하는 방법을 모르겠습니다. 각 디렉토리에 유형 파일이 포함되고 유형 파일이 디렉토리 1, 디렉토리 2,.., 디렉토리 100 에 포함되는 디렉토리 1, 2,..을 생성하는 필수 스크립트가 필요합니다 . 저는 bash를 처음 접했기 때문에 사소한 질문에 대해 사과드립니다.Y
Y = Y1(a1) - Y2(b1)
awk
XY
XY
X Y(a1-b1)
X Y(a2-b2)
X Y(a100-b100)
예시는 다음과 같습니다. 두 개의 홈 디렉토리가 있고 A
. 하위 디렉토리가 있고 하위 디렉토리가 있습니다 .B
A
0.3427/ 0.3514/ 0.3543/ 0.3792/...
B
0.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
이제 다음 데이터를 포함하는 파일이 디렉터리에 있어야 합니다 1
.data.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와 같은 열의 차이가 포함되어야 합니다.A
B
awk/paste
A
B
2
data.dat
Y
0.3514/
A
0.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