내 홈 디렉토리에서 3일 미만의 모든 파일을 찾은 다음 해당 파일의 총 문자 수를 가져오는 스크립트를 어떻게 만들 수 있습니까?
답변1
답변2
이것은 매우 간단합니다.
find ~/ -mtime -3 -exec cat {} + | wc -c
위의 전송은 각 파일의 모든 문자를 계산합니다 wc
.
파일이 큰 경우 위 작업에는 디스크에서 읽는 작업이 많이 포함됩니다. 단순히 파일의 크기만 추가하면 더 효율적일 것입니다. 파일 크기를 얻는 방법은 Unix 버전에 따라 다릅니다. 그러나 시스템이 Linux 스타일 stat
명령을 지원하는 경우 다음이 작동합니다.
find . -mtime -3 -type f -exec stat -c%s {} + | awk '{total+=$1} END{print total}'
위에서는 stat -c%s
각 파일의 크기를 반환하고 awk
함께 추가하여 총계를 보고합니다. 이렇게 하면 각 파일을 전체적으로 읽을 필요가 없습니다.
답변3
이 시도
find ./ -type f -mtime -3 -exec wc -c {} \; | perl -lane 'BEGIN {$total=0}; $total+=$F[0]; END {print $total}'
예
❮njia@mb-125:~/src/ansible/roles❯➤ find ./ -type f -mtime -3 -exec wc -c {} \;
12288 ./base/tasks/.check_glibc.yml.swp
185 ./base/tasks/check_glibc.yml
❮njia@mb-125:~/src/ansible/roles❯➤ find ./ -type f -mtime -3 -exec wc -c {} \; | perl -lane 'BEGIN {$total=0}; $total+=$F[0]; END {print $total}'
12473