
나는 다음과 같은 작업 공간 트리를 가지고 있습니다 :
/Directory
/Dir1/file1, file2
/Dir2/file3, file4
/Dir3/file5, file6
...
dir의 각 파일에 대한 줄 수의 합계를 계산하고 싶습니다.
이 스크립트가 있지만 각 파일의 줄 수만 계산하고 합계는 계산하지 않습니다.
#!/bin/bash
find . -maxdepth 1 -mindepth 1 -type d | while read dir; do
printf "%-25.25s : " "$dir"
find "$dir" -type f | while read file; do
linecount= cat $file | wc -l
echo "this file contains $linecount lnes"
done
done
답변1
내 솔루션은 다음과 같습니다
for d in */; do
echo -n "$d : "
sum=0
for f in "$d"/*; do
if [ -f "$f" ] ; then
lines=$(wc -l "$f")
sum=$((sum+lines))
fi
done
echo $sum
done
아마도 초보자에게는 좀 더 이해하기 쉬울 것입니다.
답변2
호출 수 최소화 wc
:
find /Directory -type d -print0 | while read -d '' dir; do
echo -n "$dir: "
find "$dir" -type f -exec wc -l {} + | sed -n 's/\([0-9]\{1,\}\) total/\1/p' | paste -sd+ | bc
done