仿照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. |