| import fnmatch |
| import os |
| import sys |
| |
| dirs = [ ] |
| types = [ ] |
| excludes = [ ] |
| files = [ ] |
| |
| # Default to accepting a list of directories first |
| curArray = dirs |
| |
| # Iterate over the arguments and add them to the arrays |
| for i in range(1, len(sys.argv)): |
| arg = sys.argv[i] |
| |
| if arg == "-dirs": |
| curArray = dirs |
| continue |
| |
| if arg == "-types": |
| curArray = types |
| continue |
| |
| if arg == "-excludes": |
| curArray = excludes |
| continue |
| |
| curArray.append(arg) |
| |
| # If no directories were specified, use the current directory |
| if len(dirs) == 0: |
| dirs.append(".") |
| |
| # If no types were specified, accept all types |
| if len(types) == 0: |
| types.append("*") |
| |
| # Walk the directories listed and compare with type and exclude lists |
| for rootdir in dirs: |
| for root, dirnames, filenames in os.walk(rootdir): |
| for file in filenames: |
| # Skip files that are "hidden" |
| if file.startswith("."): |
| continue; |
| |
| fullPath = os.path.join(root, file).replace("\\", "/") |
| for type in types: |
| if fnmatch.fnmatchcase(fullPath, type): |
| excluded = False |
| for exclude in excludes: |
| if fnmatch.fnmatchcase(fullPath, exclude): |
| excluded = True |
| break |
| |
| if not excluded: |
| files.append(fullPath) |
| break |
| |
| files.sort() |
| for file in files: |
| print file |