파일을 분할하고 생성된 파일 수 확인

파일을 분할하고 생성된 파일 수 확인

다음 줄을 사용하여 파일을 더 작은 부분으로 분할합니다.

split --line-bytes=100M -d $input $output/FILENAME
echo "$input was split into ??? 100MB files." >> demo.log

그런 다음 이 분할로 인해 생성된 작은 파일 수를 로그 파일에 기록해야 합니다. 이를 수행할 수 있는 방법이 있습니까?

답변1

가장 간단한 방법은 결과 조각 이름을 다음과 같이 배열에 저장하는 것입니다.

splitarr=($output/FILENAME*)

을 사용하여 배열 길이(요소 수)를 가져옵니다 ${#splitarr[@]}. 이는 패턴과 일치하는 유일한 파일 이름이 split명령에 의해 생성된 파일 이름이라고 가정합니다.


사용하고 있는 것 같으 gnu split므로 다른 방법도 있습니다. 옵션을 추가한 --verbose다음(자세한 내용은 페이지 참조) man인쇄된 줄 수를 세어 변수에 저장할 수 있습니다.splitstdout

ct=$(split --verbose --line-bytes=100M -d $input $output/FILENAME | wc -l)

덜 알려진 옵션을 사용하여 동일한 결과를 얻을 수 있습니다 --filter.

ct=$(split --filter='printf %s\\n;cat >$FILE' --line-bytes=100M -d $input $output/FILENAME | wc -l)

split또는 다음 몇 초 내에 사용자의 명령만 해당 디렉터리에 파일을 생성한다는 것을 알고 있는 경우 다음과 같이 이벤트에 대한 통계를 수집하는 N데 사용할 수 있습니다 .inotifywatchclose_write

inotifywatch . -t 20 -e close_write

현재 디렉터리의 이벤트는 다음 20초 동안 모니터링되고 close_write다음 출력이 출력됩니다.

Establishing watches...
Finished establishing watches, now collecting statistics.
total  close_write  filename
11     11           ./

따라서 테이블에서 해당 숫자를 추출하기만 하면 됩니다(예: 에 파이프 연결 awk 'END{print $2}'; 또한 처음 두 줄이 에 인쇄된다는 점을 기억하세요 stderr).

관련 정보