我有一个 perl 脚本,用于处理.xml
驻留在一个目录下的多个文件夹中的文件。该脚本使用 using parallel 的输出获取绝对文件路径ls
。
parallel -j 1 /home/lf-process/parse_orders.pl ::: `ls /home/lf-process/lf-orders/2020/*/*/*/*.xml`
如果
.done
在包含 的文件夹中找到文件.xml
,则退出脚本。 Perl 脚本.done
在处理 xml 之前在文件夹中查找文件。如果未
.done
找到文件,它将处理文件夹内容并添加.done
文件。
ls
无论文件夹是否包含 .done 文件,都会列出该.xml
文件,但 perl 脚本无论如何都会检查它并退出包含该.done
文件的 XML 文件夹。
如何列出除包含该.done
文件的文件夹之外的所有 XML 的绝对路径,以便我不会为这些订单调用脚本?
IE
ls /home/lf-process/lf-orders/2020/*/*/*/*.xml
其中包含 XML 的文件夹没有.done
文件。
答案1
你可以使用 grep:
ls /home/lf-process/lf-orders/2020/*/*/*/*.xml | grep -v \\.done
答案2
ls /home/lf-process/lf-orders/2020/*/*/*/*.xml |
perl -nE 'chomp: -e "$_.done" || say' |
parallel -j 1 /home/lf-process/parse_orders.pl