仿照unix操作系统中的find命令,在windows上实现一个find命令。find命令从指定的目录下开始,递归地查找指定文件。其命令格式如下:
find PATH -option 参数 [-print] [-exec 命令 {} /;]
PATH:查找的起始目录。
-option 参数:用来控制搜索方式,具体如下(以下只给我常用的):
-name "文件":指定要查找的文件名,可以有通配符?*等。
-prune 目录:指出搜索时不搜索该目录。
-mtime +n或-n:按时间搜索,+n:表示n天之前修改过的文件;-n:表示今天到n天前之间修改过的文件。
-ctime +n或-n:也是按时间查找,+n:表示n天之前创建的文件;-n:表示今天到n天前之间创建的文件。
-mulstream:如果是多流的文件,查找流的名字
-print:将搜索结果输出到标准输出。
提示:有关多流文件的介绍,请看文档。其他相关的API请查看MSDN.
可选的实验1:实现-exe选项。
-exec:对查找到的每一个结果实行指定的程序。格式如下:
-exec 程序名
提示:执行指定的程序可以创建一个进程执行
可选的实验:
将你实现的find命令改为用多线程的方式实现。比较多线程实现的find与单线程实现的find的执行结果、效率等,并在实验报告中给出你的解释。
File Attributes
File attributes are metadata values stored by the file system on disk and are used by the system and are available to developers via various file I/O APIs. For a list of related APIs and topics, see the See Also section.
The following table lists file attribute constant names and values with descriptions.
Name |
Value(Dec) |
Value(Hex) |
Description |
FILE_ATTRIBUTE_ARCHIVE |
32 |
0x0020 |
A file or directory that is an archive file or directory. Applications typically use this attribute to mark files for backup or removal. |
FILE_ATTRIBUTE_COMPRESSED |
2048 |
0x0800 |
A file or directory that is compressed. For a file, all of the data in the file is compressed. For a directory, compression is the default for newly created files and subdirectories. |
FILE_ATTRIBUTE_DEVICE |
64 |
0x0040 |
This value is reserved for system use. |
FILE_ATTRIBUTE_DIRECTORY |
16 |
0x0010 |
The handle that identifies a directory. |
FILE_ATTRIBUTE_ENCRYPTED |
16384 |
0x4000 |
A file or directory that is encrypted. For a file, all data streams in the file are encrypted. For a directory, encryption is the default for newly created files and subdirectories. |
FILE_ATTRIBUTE_HIDDEN |
2 |
0x0002 |
The file or directory is hidden. It is not included in an ordinary directory listing. |
FILE_ATTRIBUTE_NORMAL |
128 |
0x0080 |
A file that does not have other attributes set. This attribute is valid only when used alone. |
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED |
8192 |
0x2000 |
The file or directory is not to be indexed by the content indexing service. |
FILE_ATTRIBUTE_OFFLINE |
4096 |
0x1000 |
The data of a file is not available immediately. This attribute indicates that the file data is physically moved to offline storage. This attribute is used by Remote Storage, which is the hierarchical storage management software. Applications should not arbitrarily change this attribute. |
FILE_ATTRIBUTE_READONLY |
1 |
0x0001 |
A file that is read-only. Applications can read the file, but cannot write to it or delete it. This attribute is not honored on directories. For more information, see "You cannot view or change the Read-only or the System attributes of folders in Windows Server 2003, in Windows XP, or in Windows Vista". |
FILE_ATTRIBUTE_REPARSE_POINT |
1024 |
0x0400 |
A file or directory that has an associated reparse point, or a file that is a symbolic link. |
FILE_ATTRIBUTE_SPARSE_FILE |
512 |
0x0200 |
A file that is a sparse file. |
FILE_ATTRIBUTE_SYSTEM |
4 |
0x0004 |
A file or directory that the operating system uses a part of, or uses exclusively. |
FILE_ATTRIBUTE_TEMPORARY |
256 |
0x0100 |
A file that is being used for temporary storage. File systems avoid writing data back to mass storage if sufficient cache memory is available, because typically, an application deletes a temporary file after the handle is closed. In that scenario, the system can entirely avoid writing the data. Otherwise, the data is written after the handle is closed. |
FILE_ATTRIBUTE_VIRTUAL |
65536 |
0x10000 |
This value is reserved for system use. |