relpipe-data/examples/guile-file-count-size-sum.sh
branchv_0
changeset 248 e76ca9f7d6cb
child 316 d7ae02390fac
equal deleted inserted replaced
247:087b8621fb3e 248:e76ca9f7d6cb
       
     1 #!/bin/bash
       
     2 
       
     3 # argument: directory path
       
     4 # prints file count and sum of file sizes
       
     5 
       
     6 find "$1" -type f -print0 \
       
     7 	| relpipe-in-filesystem \
       
     8 		--file path \
       
     9 		--file size \
       
    10 	| relpipe-tr-guile \
       
    11 		--relation 'f.*' \
       
    12 		--output-attribute 'count' integer \
       
    13 		--output-attribute 'sum'   integer \
       
    14 		--before-records '
       
    15 			(define $sum   0)
       
    16 			(define $count 0)
       
    17 			(define return-sum #f)' \
       
    18 		--for-each '
       
    19 			(set! $sum   (+ $sum   $size) )
       
    20 			(set! $count (+ $count 1    ) )' \
       
    21 		--where '#f' \
       
    22 		--after-records '(set! return-sum #t)' \
       
    23 		--has-more-records '
       
    24 			(if return-sum
       
    25 				(begin (set! return-sum #f) #t)
       
    26 				#f
       
    27 			)' \
       
    28 	| relpipe-out-tabular