我有一大堆文件,64,000,我想创建一个Bash脚本,列出使用的文件名
ls -1 > file.txt
每4,000个文件,并将生成的file.txt存储在一个单独的文件夹中.因此,每4000个文件的名称都列在存储在文件夹中的文本文件中.结果是
folder01包含列出文件#0-#4000的file.txt
folder02包含列出文件#4001-#8000的file.txt
folder03包含列出文件#8001-#12000的file.txt
.
.
.
folder16包含列出文件#60000-#64000的file.txt
非常感谢你提前
你可以试试
ls -1 | awk ' { if (! ((NR-1)%4000)) { if (j) close(fnn) fn=sprintf("folder%02d",++j) system("mkdir "fn) fnn=fn"/file.txt" } print >> fnn }'
说明:
NR是awk中的当前记录号,即:当前行号.
NR在第一行开始于1,因此我们减去1,使得第一行的if
语句为真
system
从awk中调用操作系统函数
print
本身将当前行打印到标准输出,我们可以使用输出重定向(和追加)到文件 >>
awk中所有未初始化的变量都将为零值,因此我们不需要j=0
在程序的开头说明