Solved

Count files in one directory filtered by a set of filetypes

Posted on 2008-10-03
9
923 Views
Last Modified: 2012-06-21
How to count the number of files by file type in one directory when not only one file type is searched but two or more file types, e.g.: .jpg,.gif,.png
The file types are not fixed but provided by a variable. Here an example:
<cfset fileTypes=".jpg,.gif,.png" >
Result needed is only the number of files not the list of files.

Best solution will get all points, no split, so be serious that you have a better solution then Query of Queries from a cfdirectory.

0
Comment
Question by:Zvonko
9 Comments
 
LVL 19

Expert Comment

by:erikTsomik
ID: 22637664
0
 
LVL 63

Author Comment

by:Zvonko
ID: 22637685
Sorry, the cfset example was misleading.
Every user has a different value for his fileTypes.
0
 
LVL 2

Expert Comment

by:daviddriv
ID: 22637707
Well, in VBScript, I would split the list of file types into an array, iterate through the array, and search the file list for files with that extension and use a variable to hold the count...  Or, even better, in Linux I would ls -ld *.jpg *.gif *.png | wc -l
0
Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

 
LVL 63

Author Comment

by:Zvonko
ID: 22637786
Sorry, I assumed it is obvious from the question Zone: the solution should work on ColdFusion application server and should not depend on OS file system or tools.
0
 
LVL 14

Expert Comment

by:Scott Bennett
ID: 22638274
If you don't want to do a query of queries, then the best way to get the numbers is probably to cfloop through your list of filters, do a cfdirectory for each file type and then use the record count from the result set. Like this
<cfset fileTypes=".jpg,.gif,.png,.htm" >
<cfloop list="#fileTypes#" index="i">
<cfdirectory action="LIST" directory="#expandpath('/POToOracle')#" filter="*#i#" sort="name" name="results">
<cfoutput>#i# - #results.recordcount# files<br></cfoutput>
</cfloop>

Open in new window

0
 
LVL 63

Author Comment

by:Zvonko
ID: 22638335
OK, then sorry again I have not limited the cfdirectory to one call. But that is the requirement.
0
 
LVL 25

Accepted Solution

by:
dgrafx earned 500 total points
ID: 22638550
#arraylen(REMatch(replace(lcase(fileTypes),",","|","all"), lcase(valuelist(files.name))))#

where files is the cfdirectory query
and fileTypes is the ".jpg,.gif,.png" list variable

as is common with regex - very fast
0
 
LVL 63

Author Comment

by:Zvonko
ID: 22639621
Thanks dgrafx.
For better understanding here the cfdump output from one example:
<title>dgrafx's types</title>
 
<cfdirectory directory="#GetDirectoryFromPath(GetTemplatePath())#vw" name="files" action="LIST" >
 
<cfset fileTypes=".jpg,.gif,.png" >
<cfset numret=arraylen(REMatch(replace(lcase(fileTypes),",","|","all"), lcase(valuelist(files.name))))>
 
<cfoutput>
filenames:#lcase(valuelist(files.name))#<br>
types: #replace(lcase(fileTypes),",","|","all")#<br>
<cfdump var="#REMatch(replace(lcase(fileTypes),",","|","all"), lcase(valuelist(files.name)))#" >
 
numret: #numret#
</cfoutput>

Open in new window

dgrafxtypes.jpg
0
 
LVL 63

Author Closing Comment

by:Zvonko
ID: 31502912
Thanks dgrafx for sharing your nice solution.
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article  is about submitting  form through  ColdFusion.Ajax.submitForm to the action page and send a response back in JSON format which later can be decoded using ColdFusion.JSON.decode. By this way you can avoid the usual page refresh for subm…
Hi. There are several upload tutorials using jquery and coldfusion. I found a very interesting one here Upload Your Files using Jquery & ColdFusion and Preview them (http://www.randhawaworld.com/) . I did keep the main js functions but made sever…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

810 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question