列出所有目录中的文件,但跳过文件夹中包含特定文件的文件

列出所有目录中的文件,但跳过文件夹中包含特定文件的文件

我有一个 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

相关内容