次のファイルが数千以上あります。
A20200727.2015+0200-2030+0200_SubNetwork=ppp,MeContext=xxx23,celltracefile_DUL1_3.bin.gz
A20200727.2015+0200-2030+0200_SubNetwork=ppp,MeContext=ggg13,celltracefile_DUL1_3.bin.gz
A20200727.2015+0200-2030+0200_SubNetwork=ppp,MeContext=aaa56,celltracefile_DUL1_3.bin.gz
A20200727.2015+0200-2030+0200_SubNetwork=ppp,MeContext=slsf86,celltracefile_DUL1_3.bin.gz
A20200727.2015+0200-2030+0200_SubNetwork=ppp,MeContext=ccc57,celltracefile_DUL1_3.bin.gz
cut
- sort
- uniq
xxx23
、、、、ggg13
文字aaa56
を試していますslsf86
。何千ものあります。そのうちのいくつかを数えて、800 xxx23
uniq の束でサブフォルダに移動し、ソースggg13
から 800 uniq を含む複数のフォルダに移動します。aaa56
slsf86
私の考えは、リストを配列に入れ、各サブフォルダの配列値を呼び出すことです。後続のフォルダが大きくなったときに追加の番号800を使用して自動的に作成されるようにするにはどうすればよいですか?
#!/bin/bash
origFolder="/data/rawdata/temp"
destFolder="/data/rawdata/cpp_tr"
NoOfFilesinEachDir=800
###################################################################################################
numberTR=`ls $origFolder | egrep "^A[[:digit:]]{8}\.[[:digit:]]{4}.*bin.gz" | cut -f2 -d',' | cut -d'=' -f2 | sort | uniq | wc -l`
siteuniq=`ls $origFolder | egrep "^A[[:digit:]]{8}\.[[:digit:]]{4}.*bin.gz" | cut -f2 -d',' | cut -d'=' -f2 | sort | uniq`
##Calculate and create folders required to put 800files.
for count in $NoOfFilesinEachDir; do
nn=1
numberofbunch=$((numberTR%count?numberTR/count+1:numberTR/count))
if [[ $numberTR -le $count ]]; then
mkdir "$destFolder/cpptr_$nn"
else [[ $numberTR -gt $count ]];
for (( pp=1; pp<=$numberofbunch; pp++ )); do
mkdir "$destFolder/cpptr_$pp"
done
fi
done
## I am trying to make this list automate for no of folders created above
for number in $NoOfFilesinEachDir; do
kkk=()
#echo $site
read -r -a kkk <<< $siteuniq
lastelement=$(echo "${#siteuniq[@]}")
for (( bb=0; bb<=$number; bb++ )); do
find $origFolder -regextype sed -regex ".*${kkk[bb]}*.*" -exec cp -fp {} $destFolder/cpptr_1 \;
done
for (( cc=801; cc<=1600; cc++ )); do
find $origFolder -regextype sed -regex ".*${kkk[cc]}*.*" -exec cp -fp {} $destFolder/cpptr_2 \;
done
for (( dd=1601; dd<=2400; dd++ )); do
find $origFolder -regextype sed -regex ".*${kkk[dd]}*.*" -exec cp -fp {} $destFolder/cpptr_3 \;
done
for (( dd=2401; dd<=$lastelement; dd++ )); do
find $origFolder -regextype sed -regex ".*${kkk[dd]}*.*" -exec cp -fp {} $destFolder/cpptr_4 \;
done
done
~