모든 디렉터리의 파일을 나열하지만 특정 파일이 포함된 폴더의 파일은 건너뜁니다.

모든 디렉터리의 파일을 나열하지만 특정 파일이 포함된 폴더의 파일은 건너뜁니다.

.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

관련 정보