특정 크기에 도달하고 파일 확장자가 올바른 경우 출력을 여러 파일로 분할합니다.

특정 크기에 도달하고 파일 확장자가 올바른 경우 출력을 여러 파일로 분할합니다.

나는 사용한다

make | tee >(split -d -b 10000000 - debug.log.0)

10MB에 도달한 후 출력을 여러 디버그 파일로 분할합니다.

그러면 debug.log.000, debug.log.001, debug.log.002...라는 파일이 생성됩니다.

나중에 이름을 바꿀 수 있어요

for i in debug*; do echo $i; done

.log하지만 각 파일의 끝 부분에 직접 엔딩을 가져오도록 명령을 재구성하려면 어떻게 해야 합니까 ?

답변1

다음 옵션을 사용하여 분할 파일의 파일 끝을 선택할 수 있습니다.--additional-suffix

make | tee >(split --additional-suffix=.log -d -b 10000000 - debug.0)

답변2

find . -maxdepth 1 -size +10M -exec du -shk {} \;| sed "s/\.\///g"|awk '$1 > 50 {print "split -l Specifylinenumber"  " " $2}'|sh


After above file whose size is greater than 10M will be splitted as xaa,xab,xac and so on

Use below command to get it renamed

f=1;for i in xa*; do  mv $i debug.log.00$f; f=$(($f+1)); done

관련 정보