すべてのディレクトリのファイルを一覧表示しますが、特定のファイルを含むフォルダ内のファイルはスキップされます。

すべてのディレクトリのファイルを一覧表示しますが、特定のファイルを含むフォルダ内のファイルはスキップされます。

.xmlディレクトリの下に複数のフォルダにあるファイルを処理するPerlスクリプトがあります。スクリプトは、パラレルを使用した出力を使用して絶対ファイルパスを取得しますls

parallel -j 1 /home/lf-process/parse_orders.pl ::: `ls /home/lf-process/lf-orders/2020/*/*/*/*.xml`
  • .doneファイルが含まれているフォルダにある場合は、スクリプトを終了します.xml。 Perlスクリプトは、.donexmlを処理する前にフォルダ内のファイルを探します。

  • ファイルが見つからない場合は、.doneフォルダの内容を処理して.doneファイルを追加します。

lsフォルダに.doneファイルが含まれているかどうかに関係なく、ファイルが一覧表示されますが、.xmlPerlスクリプトはとにかくそれを確認し、.doneファイルを含むXMLフォルダを終了します。

.doneその注文のスクリプトを呼び出さないように、ファイルを含むフォルダを除くすべてのXMLへの絶対パスをどのように一覧表示しますか?

つまり

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

関連情報