首页 > 解决方案 > Bash - 从一个文件列表创建多个列表文件

问题描述

该目录包含x文件。我得到一个文件列表。我想将此列表拆分为更多数量的n列表,这些列表的元素数量有限。

例子:

files=$( ls -d /*.csv | sort )
echo $files

/100347_111111.csv
/111301_111111.csv
/111301_222222.csv
/256467_111111.csv
/256467_222222.csv
/256467_333333.csv
/256467_444444.csv
/256467_555555.csv
/256467_666666.csv
/256467_777777.csv

从结果列表中,我想创建 3 个列表。列表的元素不得超过 4 个。第一个列表应由 的前 4 个元素组成files,另一个列表应包含以下 4 个元素,第三个列表应包含其余元素。

n1
/100347_111111.csv
/111301_111111.csv
/111301_222222.csv
/256467_111111.csv

n2
/256467_222222.csv
/256467_333333.csv
/256467_444444.csv
/256467_555555.csv

n3
/256467_666666.csv
/256467_777777.csv

有人可以帮忙吗,如何创建如上所述的列表?

标签: bashlistfor-loop

解决方案


FILES=( `ls -d * | sort`)
echo "${FILES[@]:0:4}"

循环 4

count=4
for i in $(seq 0 $(( ${#FILES[@]}/$count - 1 ))) ;
   do  
     echo "######## Set" $i "#######"; 
     echo "${FILES[@]:$(( i * $count )):$count }" ; 
   done

推荐阅读