App-pl
view release on metacpan or search on metacpan
pod/examples.pod view on Meta::CPAN
pl -ln '++$N{$_}'
> 1: 2018-07-19
> 1: 2019-04-10
> ...
> 34: 2020-02-11
> 93: 2020-02-29
> 2816: 2018-06-27
> 3307: 2019-05-11
> 6024: 2019-10-21
> 12159: 2019-10-24
=item Count Files per Date with Rollup
I<Learn sign language! It's very handy. :-)>
Rollup means, additionally to the previous case, sum up dates with the same
prefix. The trick here is to count both for the actual year, month and day,
as well as replacing once only the day, once also the month with "__", and
once also the year with "____". This sorts after numbers and gives a sum for
all with the same leading numbers. Use the sort-by-key-and-stringify-at-end
pod/examples.pod view on Meta::CPAN
pl -oB 'e for @A' 'p {
k if s@.{29,}% .{16} [\da-f]{8}\K (.+)@@;
} "unzip", "-vqq", $_' *.zip
> perl-5.30.0.zip
> perl-5.30.1.zip
> perl-5.30.2.zip
> perl-5.30.3.zip
> AUTHORS
> 48831 Defl:N 22282 54% 2019-05-11 11:50 cc2a1286
> 48864 Defl:N 22297 54% 2019-10-24 23:27 b793bcc5
> 48927 Defl:N 22338 54% 2020-02-29 12:55 8cecd35e
> 48927 Defl:N 22338 54% 2020-02-11 14:31 8cecd35e
> Artistic
> 6321 Defl:N 2400 62% 2019-05-11 11:50 fa53ec29
> 6321 Defl:N 2400 62% 2019-10-24 22:17 fa53ec29
> 6321 Defl:N 2400 62% 2019-10-24 22:17 fa53ec29
> 6321 Defl:N 2400 62% 2019-10-21 13:20 fa53ec29
> Changes
> 3168 Defl:N 1273 60% 2018-06-27 13:17 66a9af3e
> 3111 Defl:N 1246 60% 2019-10-27 10:52 f826c349
> 3111 Defl:N 1246 60% 2019-10-27 10:52 f826c349
> 3111 Defl:N 1246 60% 2019-10-28 09:05 f826c349
> ...
Java .jar, .ear & .war files (which are aliases for .zip), after a clean build
have many class files with the identical crc, but a different date. This
pod/examples.pod view on Meta::CPAN
if s!^[^d]\S+ \K(.+?) +(\d+) (.{16}) (.+)!F "%-20s %10d %s", $1, $2, $3!e;
} "tar", "-tvf", $_' *.tar *.tgz *.txz
> perl-5.30.0.txz
> perl-5.30.1.txz
> perl-5.30.2.txz
> perl-5.30.3.txz
> ...
> cpan/Compress-Raw-Bzip2/bzip2-src/decompress.c
> -r--r--r-- pfeiffer/pfeiffer 20948 2018-06-27 13:17
> -r--r--r-- pfeiffer/pfeiffer 20948 2019-10-24 22:17
> -r--r--r-- pfeiffer/pfeiffer 21287 2020-02-29 12:55
> -r--r--r-- pfeiffer/pfeiffer 21287 2020-02-12 18:41
> cpan/Compress-Raw-Bzip2/bzip2-src/huffman.c
> -r--r--r-- pfeiffer/pfeiffer 6991 2018-06-27 13:17
> -r--r--r-- pfeiffer/pfeiffer 6991 2019-10-24 22:17
> -r--r--r-- pfeiffer/pfeiffer 6986 2020-02-29 12:55
> -r--r--r-- pfeiffer/pfeiffer 6986 2020-02-12 18:41
> cpan/Compress-Raw-Bzip2/bzip2-src/randtable.c
> -r--r--r-- pfeiffer/pfeiffer 3866 2018-06-27 13:17
> -r--r--r-- pfeiffer/pfeiffer 3866 2019-10-24 22:17
> -r--r--r-- pfeiffer/pfeiffer 3861 2020-02-29 12:55
> -r--r--r-- pfeiffer/pfeiffer 3861 2020-02-12 18:41
> cpan/Compress-Raw-Bzip2/fallback/constants.h
> -r--r--r-- pfeiffer/pfeiffer 7238 2018-06-27 13:17
> -r--r--r-- pfeiffer/pfeiffer 7238 2019-10-24 22:17
> -r--r--r-- pfeiffer/pfeiffer 7238 2019-10-24 22:17
> -r--r--r-- pfeiffer/pfeiffer 7238 2019-10-21 13:20
> ...
Same without the date:
pl -o 'piped {
keydiff $3
if s!^[^d]\S+ \K(.+?) +(\d+) .{16} (.+)!Form "%-20s %10d", $1, $2!e;
} "tar", "-tvf", $_' *.tar *.tgz *.txz
pl -o 'p {
pod/examples.pod view on Meta::CPAN
keydiff $4
if s!^[^d]\S+ \K(.+?) +(\d+) (.{16}) [^/]+/(.+)!Form "%-20s %10d %s", $1, $2, $3!e;
} "tar", "-tvf", $_' *.tar *.tgz *.txz
pl -o 'p {
k $4
if s!^[^d]\S+ \K(.+?) +(\d+) (.{16}) [^/]+/(.+)!F "%-20s %10d %s", $1, $2, $3!e;
} "tar", "-tvf", $_' *.tar *.tgz *.txz
> .dir-locals.el
> -r--r--r-- sawyer/sawyer 208 2018-06-27 13:17
> -r--r--r-- Steve/None 208 2019-10-24 22:17
> -r--r--r-- Steve/None 208 2019-10-24 22:17
> -r--r--r-- Steve/None 208 2019-10-21 13:20
> .lgtm.yml
> -r--r--r-- sawyer/sawyer 347 2019-05-11 11:50
> -r--r--r-- Steve/None 347 2019-10-24 22:17
> -r--r--r-- Steve/None 347 2019-10-24 22:17
> -r--r--r-- Steve/None 347 2019-10-21 13:20
> .metaconf-exclusions.txt
> -r--r--r-- sawyer/sawyer 1317 2019-05-11 11:50
> -r--r--r-- Steve/None 1317 2019-10-24 22:17
> -r--r--r-- Steve/None 1317 2019-10-24 22:17
> -r--r--r-- Steve/None 1317 2019-10-21 13:20
> .travis.yml
> -r--r--r-- sawyer/sawyer 2203 2019-05-11 11:50
> -r--r--r-- Steve/None 2203 2019-10-24 23:27
> -r--r--r-- Steve/None 2203 2019-10-24 23:27
> -r--r--r-- Steve/None 2203 2019-10-21 13:20
> AUTHORS
> -r--r--r-- sawyer/sawyer 48831 2019-05-11 11:50
> -r--r--r-- Steve/None 48864 2019-10-24 23:27
> -r--r--r-- Steve/None 48927 2020-02-29 12:55
> -r--r--r-- Steve/None 48927 2020-02-11 14:31
> Artistic
> -r--r--r-- sawyer/sawyer 6321 2019-05-11 11:50
> -r--r--r-- Steve/None 6321 2019-10-24 22:17
> -r--r--r-- Steve/None 6321 2019-10-24 22:17
> -r--r--r-- Steve/None 6321 2019-10-21 13:20
> Changes
> -r--r--r-- sawyer/sawyer 3168 2018-06-27 13:17
> -r--r--r-- Steve/None 3111 2019-10-27 10:52
> -r--r--r-- Steve/None 3111 2019-10-27 10:52
> -r--r--r-- Steve/None 3111 2019-10-28 09:05
> ...
Again without the date and owner/group, which can also vary:
pod/examples.pod view on Meta::CPAN
> / 1011011000111 21222222 1123013 42555 7888 5831
> / 10001000101011 102222222 2020223 104255 12888 8747
> / 11001101000001 122222222 3031001 140425 18888 13121
> / 100110011100010 222222222 10303202 231042 28888 19682
> \ 10011001110001 111111111 2121301 113321 14444 9841
> / 11100110101010 202020202 3212222 152202 22222 14762
> \ 1110011010101 101010101 1303111 54101 11111 7381
> / 10101101000000 120012002 2231000 123132 16162 11072
> \ 1010110100000 21121001 1112200 41344 7531 5536
> \ 101011010000 10210112 223100 20452 3715 2768
> \ 10101101000 1220021 111220 10224 1807 1384
> \ 1010110100 221122 22310 3112 848 692
> \ 101011010 110211 11122 1334 424 346
> \ 10101101 20102 2231 445 212 173
> / 100000100 100122 10010 1112 318 260
> \ 10000010 11211 2002 334 154 130
> \ 1000001 2102 1001 145 72 65
> / 1100010 10122 1202 242 118 98
> \ 110001 1211 301 121 54 49
> / 1001010 2202 1022 202 82 74
> \ 100101 1101 211 101 41 37
( run in 0.312 second using v1.01-cache-2.11-cpan-88abd93f124 )