This looks like a promising approach, once I get the file expansion process working the way I want it to work.
Skip On Fri, Nov 4, 2011 at 9:55 AM, Devon McCormick <[email protected]> wrote: > This sounds like the sort of thing for which I'd use my adverb > "generalWalkTree": http://www.jsoftware.com/jwiki/NYCJUG/2009-09-08#* > GeneralWalkTree . This is an adverb which applies a verb to each directory > starting from the specified path and working down the tree. > > For example, if I have "findFile" defined > > findFile=: ([: < '\' ,~ ]) ,&.> [ (] #~ ] +./ .E.&>~ [: < [) [: {."1 [: > dir '\*' ,~ ] > > used like this > > 'misc' findFile 'C:\amisc\CurrentJCode' > +---------------------------------+ > |C:\amisc\CurrentJCode\miscSAS.ijs| > +---------------------------------+ > > I can apply it to find all my ".gz" files at or below my "C:\amisc" > directory like this: > > 6!:2 'whgz=. (''.gz''&findFile) generalWalkTree ''C:\amisc''' > 137.661 > $whgz > 9862 > $whgz-.a: > 36 > > Looking at one of the non-empty finds: > > >0{whgz-.a: > > +------------------------------------------------------------------------------------------+ > > |C:\amisc\Books\ImplementationOfFunctionalLanguagesBySimonPeytonJones_slpj-book-1987.tar.gz| > > +------------------------------------------------------------------------------------------+ > flst=. shell 'gunzip -l > > C:\amisc\Books\ImplementationOfFunctionalLanguagesBySimonPeytonJones_slpj-book-1987.tar.gz' > $flst > 162 > flst > compressed uncompr. ratio uncompressed_name > 31367195 40693760 22.9% > > C:\amisc\Books\ImplementationOfFunctionalLanguagesBySimonPeytonJones_slpj-book-1987.tar > > generalWalkTree=: 1 : 0 > (1 0) u generalWalkTree y NB. Default: breadth-first, flattened result. > : > ct=. 0 [ rr=. '' [ stack=. ,boxopen y [ x=. 2{.x > ctr=. (0{x){_1 0 NB. First we build the stack. > while. ct<#stack do. NB. Get subdir names: > subds=. ((('d'e.&>4{"1])#0{"1])@:(1!:0@<)) (>ctr{stack),'\*' > subds=. subds (],&.>'\',&.>[) ctr{stack NB. -> full path names > if. 0{x do. stack=. stack,subds NB. Breadth or > else. stack=. subds,stack end. NB. depth first > ctr=. ctr+(0{x){_1 1 [ ct=. >:ct NB. Go forward or backward > end. > dpth=. (]-<./)'\'+/ . =&>stack > > if. 1{x do. ;&.>(<:~.dpth) depthEnc dpth </. u&.>stack NB. Preserve tree > else. u&.>stack end. NB. or flatten > it. > NB.EG ([:;2{"1 [:dir '*',~],'\'-.{:) generalWalkTree 'C:\' NB. All file > sizes > ) > > depthEnc=: 4 : '<^:(>:x)]y'"0 > boxopen=: <^:(L. = 0:) > > * > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
