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
我有一个动态填充的文件,其中包含一些日期,每行一个,如下所示:
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