写IDL程序的时候经常遇到需要读取某个目录下的所有文件,如果文件过多,挨个写会很麻烦,这时候可以使用file_search函数来遍历整个文件夹。
示例:filearr = file_search('d:\file\','*.gz',count=num);
说明:
filearr是一个数组,里面存放着 d:\file\ 目录中所有的后缀名为.gz的文件的详细路径。
详细的方法可以使用IDL自带的help,下面是详细的使用示例:
搜索当前目录下的所有文件IDL>;获得当前工作目录
IDL> cd,current = workDir
IDL>;输出查看工作目录
IDL> print,workDir
C:\Users\Administrator
IDL>;搜索工作目录下的所有文件,统计结果到变量num中
IDL> r = file_search(count = num)
IDL>;查看统计个数
IDL> print,num
30
IDL>;各文件名称以字符串方式存储在返回值r中
IDL> help,r
R STRING = Array[30]
搜索文件夹“c:\temp”下的所有文件和文件夹;IDL> r = file_search('c:\temp','*',count = num)
IDL>;查看统计个数
IDL> print,num
8
IDL>;输出完整路径名
IDL> print,r
C:\temp\a.txt C:\temp\aaa.pro C:\temp\aba.pro C:\temp\文件夹1 C:\temp\文件夹1\c.pro C:\temp\文件夹1\d.pro
C:\temp\文件夹1\文件夹2 C:\temp\文件夹1\文件夹2\e.pro
搜索文件夹“c:\temp”下的所有文件,不包含文件夹;IDL> r = file_search('c:\temp','*',count = num,/test_regular)
IDL>;查看统计个数
IDL> print,num
6
IDL>;输出完整路径名
IDL> print,r
C:\temp\aaa.pro C:\temp\aba.pro C:\temp\可执行.exe C:\temp\文件夹1\c.pro C:\temp\文件夹1\d.pro C:\temp\文件夹1\文件夹2\e.pro
搜索文件夹“c:\temp”下的所有文件夹,不包含文件;IDL> r = file_search('c:\temp','*',count = num,/test_directory)
IDL>;查看统计个数
IDL> print,num
2
IDL> print,r
C:\temp\文件夹1 C:\temp\文件夹1\文件夹2
搜索文件夹“c:\temp”中的所有文件,不搜索子目录;IDL> r = file_search('*',count = num,/test_regular)
IDL>;查看统计个数
IDL> print,num
3
IDL> print,r
aaa.pro aba.pro 可执行.exe
搜索文件夹“c:\temp”中的所有可执行文件(Windows下文件后缀为exe);IDL> r = file_search('*',count = num,/test_executable,/test_regular)
IDL>;查看统计个数
IDL> print,num
1
IDL> print,r
可执行.exe
搜索文件夹“c:\temp”中的扩展名为“.pro”的文件;IDL> r = file_search('*.pro',count = num,/test_regular)
IDL>;查看统计个数
IDL> print,num
2
IDL> print,r
aaa.pro aba.pro
搜索文件夹“c:\temp”中的名称中含有“b”的所有文件;IDL> r = file_search('*b*',count = num,/test_regular)
IDL>;查看统计个数
IDL> print,num
1
IDL> print,r
aba.pro
参考:http://blog.sciencenet.cn/blog-344887-630319.html