단조롭게 증가하는 파일 이름 목록의 공백을 확인할 수 있는 도구가 있습니까?

단조롭게 증가하는 파일 이름 목록의 공백을 확인할 수 있는 도구가 있습니까?

나는 각 디렉토리에 수백만 개의 파일이 들어 있는 수백 개의 디렉토리를 받았습니다. 예:

DirA
+----+ A_000001.txt
     |
     + A_000002.txt
     |
     + ... etc..

000001부터 999999까지의 모든 숫자에 대해 파일이 존재하는지 확인하고 싶습니다. 따라서 파일이 A_678123.txt누락된 경우 도구에서 이를 보고해야 합니다. 현재 비트 배열을 생성 중이며 ls출력을 가져와 구문 분석된 파일 번호에 해당하는 모든 비트 위치에 대해 1을 설정합니다.

내 해킹된 Python 스크립트를 대체할 수 있는 도구(또는 도구 조합)가 있습니까?

답변1

seq한 가지 방법은 , sort및 다음을 조합하여 사용하는 것입니다 uniq.

# Get a list of all the files in DirA
cd DirA
ls . > files.txt
# Get a list of all expected files
seq -f "A_%06.0f.txt" 0 999999 > expected.txt
# Find unique entries
sort files.txt expected.txt | uniq -u

seq파일 이름과 일치하도록 인수를 조정해야 할 수도 있습니다 .

일단 작동하면 임시 파일을 사용하지 않고 시도해 볼 수 있습니다.

cd DirA
sort <(ls .) <(seq -f "A_%06.0f.txt" 0 999) | uniq -u

그런 다음 모든 디렉터리를 검색할 준비가 되면 다음을 수행하세요.

for d in ./*/; do
  pushd "$d"
  sort <(ls .) <(seq -f "A_%06.0f.txt" 0 999) | uniq -u
  popd
done

각 디렉터리와 해당 디렉터리에서 누락된 모든 파일을 나열하는 다음과 유사한 출력이 표시됩니다.

./DirA/
A_000371.txt
./DirB/
A_000881.txt
./DirC/
A_000101.txt
A_000191.txt

관련 정보