.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