패턴에 누락된 파일 이름 나열

패턴에 누락된 파일 이름 나열
  1. 숫자로 시작하고 하이픈으로 연결된 파일이 많이 있습니다. 예를 들어:

    001 - awesomesauce
    216 - stillawesomesauce
    
  2. 하위 디렉토리로 구성되어 있습니다.

bash그렇다면 이 디렉토리에 있는 스크립트나 일부 내장된 보기를 사용하여 숫자가 순서대로 누락되었는지 확인하려면 어떻게 해야 합니까 ? 즉, 위의 예에서 내가 실종되었다고 보고하는 것입니다 002. 128가능하다는 것을 알고 ls {000..216}\ -*파일을 나열하고 찾을 수 없으면 오류가 발생합니다. 하지만 누락된 파일을 가져와 재귀적으로 수행하는 더 좋은 방법이 있습니까?

답변1

설정 에서 gnu다음을 실행할 수 있습니다.

myarr=( $(find . -type f -name '[0-9][0-9][0-9]*' -printf '%f\n' | cut -c1-3 | sort -n) )
join -v1 <(seq -w ${myarr[-1]}) <(printf '%s\n' ${myarr[@]})

또는 를 사용하여 zsh다음과 같이 시도해 볼 수 있습니다.

myarr=( **/[0-9][0-9][0-9]*(.one_'REPLY=${${REPLY:t}:0:3}'_) )
mynums=( {001..$myarr[-1]} )
print -l ${mynums:|myarr}

각 파일 이름에서 숫자(처음 3자리)를 추출하고 정렬한 후 결과를 배열에 저장합니다 myarr. 그런 다음 마지막 인덱스 값(즉, 파일 이름에서 추출된 가장 큰 숫자)부터 시작하는 숫자를 mynums포함하는 다른 배열을 설정한 다음 다음을 사용합니다.001매개변수 확장myarr확장자에서 값을 제거합니다 mynums.

답변2

나는 썼다findmissing파이썬 스크립트그것이 바로 그 일입니다. macOS에서 개발했지만 모든 플랫폼에서 실행되어야 합니다. Python 2.7 및 3.6에서 실행을 테스트했습니다.

내 스크립트가 실제로 작동하는 모습은 다음과 같습니다.

$ cat sampleFile.txt | python findmissing.py -p "DSC003\.(\d+)"
12
13
14
16
17
18
22
23
24

...다음 파일과 함께 제공되면 출력됩니다.

Id                                  Name         Type   Size     Created
1Dgt5ZFKT3zilwPZdiPyPmhM0Y3Fz_xo8   DSC003.010   bin    1.1 GB   2018-06-12 16:57:14
16QPadXBXPGIwiRhzMFRuY7tZkdIlJ1DI   DSC003.011   bin    1.1 GB   2018-06-12 16:54:57
1zD492J3F42Azeoct82DMlXRRuWA8AUiY   DSC003.015   bin    1.1 GB   2018-06-12 17:32:12
1bah8OM_F49BNeoct8M2DlXRRuOD8AUiY   DSC003.019   bin    1.1 GB   2018-06-12 17:24:41
1eZfY4qn3Ol6w1BFafQn6YDy1uOU82NNA   DSC003.020   bin    1.1 GB   2018-06-12 17:21:46
1x-P84Jq1cyuJCW2Opvy4m_qOjOHvAKtA   DSC003.021   bin    1.1 GB   2018-06-12 17:27:16
1O4TjR8Cl31A5qxHkyVmhmukp4dofCO3t   DSC003.025   bin    1.1 GB   2018-06-12 17:36:00

관련 정보