plt_metgrid_try.000001.png
我有以下 544 个文件的列表:
plt_metgrid_try.000544.png
我需要从 544 个文件的长列表中分离出每 8 个文件。
例如。
list 1:: plt_metgrid_try.000001.png,
plt_metgrid_try.000009.png,
plt_metgrid_try.000017.png
list 2:: plt_metgrid_try.000002.png,
plt_metgrid_try.000010.png,
plt_metgrid_try.000018.png
.
.
.
.
.
.
list 8:: plt_metgrid_try.000008.png,
plt_metgrid_try.000016.png,
plt_metgrid_try.000024.png
同样,我需要创建 8 个列表并将这个长列表分开。
我如何将它们分开?
请指导解决。提前致谢。
答案1
一种无循环awk
变体
awk '{print $0 > "file_"NR%8+1".lst" }' file
以及 GNU 的sed
替代品
for n in {0..7}; do sed -n "$n~8p" file > "$n.lst"; done
编辑
从下面的评论来看,这可能就是想要的......
ls -d -- *.png | awk '{print $0 > "file_"NR%8+1".lst" }'
答案2
假设每行一个文件:
for n in {0..7} ; do awk "(NR%8)==$n {print}" <BigFile.lst >File-$n.lst ; done
答案3
给定从 plt_metgrid_try.000001.png 到 plt_metgrid_try.000544.png 的 544 个文件名,您可以使用大括号扩展在 ksh93、bash 或 zsh 中分配 8 个数组:
list1=(plt_metgrid_try.000{001..544..8})
list2=(plt_metgrid_try.000{002..544..8})
list3=(plt_metgrid_try.000{003..544..8})
list4=(plt_metgrid_try.000{004..544..8})
list5=(plt_metgrid_try.000{005..544..8})
list6=(plt_metgrid_try.000{006..544..8})
list7=(plt_metgrid_try.000{007..544..8})
list8=(plt_metgrid_try.000{008..544..8})
大括号扩展是一种简单的文本扩展,不匹配,因此这些列表中的文件名可能存在也可能不存在。这里的大括号扩展从给定的数字开始,一直到 544,增量为 8。