Bash
如何讀取所有子目錄並在bash中創建相應的文件?
我有兩個主要目錄說,
A
和B
. 它們每個都包含 100 個隨機名稱的子目錄(a1,a2,.. 和 b1,b2,…)。這些子目錄包含一個XY
類型的文件。X
特定子目錄的值相同a1
,b1
但Y
值不同。我現在可以創建一個XY
類型文件,其中只有Y
子目錄Y
列之間的區別,比如Y = Y1(a1) - Y2(b1)
用一個簡單的awk
命令左右。但我不知道如何對所有子目錄使用 bash 循環。我想要一個將創建目錄 1、2、.. 的所需腳本,其中每個目錄將包含一個XY
類型文件,XY
類型文件包含X Y(a1-b1)
在目錄 1 中,X Y(a2-b2)
在目錄 2 中,..,在目錄X Y(a100-b100)
100 中。我是 bash 的新手,所以對任何瑣碎的問題表示歉意。示意圖範例可以是這樣的:我有兩個主目錄
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
第一個子目錄的列的差異A
,B
可以通過awk/paste
命令生成。A
現在我希望and中存在的所有其他子目錄都一樣B
。文件在目錄2
中的位置應包含of和of等列data.dat
的差異。Y``0.3514/``A``0.4014/``B
試試這個。
#!/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