Solved

Count files in one directory filtered by a set of filetypes

Posted on 2008-10-03
9
919 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
 
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
DevOps Toolchain Recommendations

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

 
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

PROBLEM:  How to open a cfwindow or run a function on double click of a cfgrid row. One of my clients wanted to be able to double click on a row item to get more detailed information about a transaction and to be able to modify the line items i…
CFGRID Custom Functionality Series -  Part 1 Hi Guys, I was once asked how it is possible to to add a hyperlink in the cfgrid and open the window to show the data. Now this is quite simple, I have to use the EXT JS library for this and I achiev…
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.
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

920 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

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now