.xml
ディレクトリの下に複数のフォルダにあるファイルを処理するPerlスクリプトがあります。スクリプトは、パラレルを使用した出力を使用して絶対ファイルパスを取得します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への絶対パスをどのように一覧表示しますか?
つまり
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