bash 提取列表文件并将它们分组到另一个文件中

bash extract list file and group them into another file

我有一个动态填充的文件,其中包含一些日期,每行一个,如下所示:

20190807
20190806
20190805
20190804

我创建了一个脚本来逐行读取文件,并将存在的文件列表提取到另一个目录中:

FILEMASTER="lista_master"
while IFS= read -r line
do
    ls -tr /var/home/test/*_"$line"_*.jpg | head -n2 >> lista_test
done < "$FILEMASTER"

这个脚本没问题,它创建了一个文件 (lista_test),其中包含每个日期的最后两个 .jpg 文件。输出样本:

/var/home/test/MAN_20190804_jolly1.jpg
/var/home/test/CAT_20190804_selly2.jpg
/var/home/test/RET_20190805_jolly1.jpg
/var/home/test/GES_20190805_angyt2.jpg
/var/home/test/TOR_20190806_jolly1.jpg
/var/home/test/GIL_20190806_gally2.jpg
/var/home/test/POE_20190807_frity1.jpg
/var/home/test/TAR_20190807_tally2.jpg

我的问题是这样的:

我应该提取不同的结果文件 )"lista_test1", "lista_test2", "lista_test3", "lista_test4" etc) for每条提取线。不是所有文件都在一个文件中。

由于您希望每个日期都有一个文件列表,因此请在循环中重复使用这些变量。像这样:

  • 假设您在文件(名为 dates_list.txt)中有一个日期列表,如下所示:

    20200101
    20200202
    20200303
    20200404
    
  • 那么您的脚本可能如下所示:

    while IFS= read -r line
    do
        ls -tr /var/home/test/*_"$line"_*.jpg | head -n2 > $line.list
    done < dates_list.txt
    

请注意,我会使用 > 而不是 >>,以确保您不会在每次 运行 脚本时一遍又一遍地添加相同的文件。

  • 结果为:

    20200101.list        # contain the files *_20200101_*.jpg
    20200202.list        # contain the files *_20200202_*.jpg
    20200303.list        # contain the files *_20200303_*.jpg
    20200404.list        # contain the files *_20200404_*.jpg