1000 개의 파일을 포함해야하는 폴더가 있습니다. out_x.dat, 어디서 x 1에서 1000 사이의 숫자입니다. ls out_* | wc -l, 나는 거기에 996 파일을 참조하십시오. 나는 네 명이 실종되었다는 것을 알고 싶다. 이것을 어떻게 할 수 있습니까? 나는 이것으로 기존 파일을 나열 할 수있다.
ls out* | awk -F '_' '{ print $2}'
1000 파일 내에 존재하지 않는 것을 나열 할 수있는 무언가가 있습니까?
숫자가 4 자리 숫자로 지정되면 명령 행을 다음과 같이 처리 할 수 있습니다.
—
AFH
for (( i=1; i<=1000; ++i )); do printf -v n out_%04d.dat $i; [ -e $n ] || echo $n missing; done.
@AFH 또는 bash / ksh / zsh에서보다 간단하게 고정 폭
—
dave_thompson_085
for i in {0001..1000}; do [ -e out_$i.dat ] ...; done 또 다른 옵션은 다음과 같습니다. diff <(ls out_* | sort -t_ -nk2) <(printf '%s\n' out_{1..1000}) # or 0001..1000
@ dave_thompson_085 - 고마워, 나는 그 구조에 대해 잊어 버렸어. 사실, 우분투에서
—
AFH
bash 나는 그것을 발견했다. {01..1000} 시퀀스의 마지막 숫자에 필요한 자릿수로 채우기 동일한 결과를 제공합니다. 대조적으로 {1..1000} 선행 숫자가 없다.
@AFH는 매력처럼 작동합니다. 감사합니다!
—
sodiumnitrate
for (( i=1; i<=1000; ++i )); do [ -e out_$i.dat ] || echo out_$i.dat missing; done.