--- name: advanced-file-management description: Advanced file management tools. Includes batch folder creation, batch file moving, file listing, and HTML author extraction. --- # Advanced File Management Skill This skill provides tools for desktop file management: 1. **Folder creation**: Create multiple folders under a target directory 2. **Move files**: Move multiple files to a target directory 3. **List all files**: Recursively list all files under a directory 4. **Extract authors**: Extract authors from HTML papers ## Important Notes - **Do not use other bash commands**: Do not attempt to use general bash commands or shell operations like cat, ls. - **Use relative paths**: Use paths relative to the working directory (e.g., `./folder/file.txt` or `folder/file.txt`). - **Do not create scripts**: Do not use `write_file` to create any scripts. ## I. Skills ### 1. Create Multiple Folders Creates multiple folders under a target directory. ### Features - Creates multiple folders with specified names - Supports any number of folder names as arguments ### Example ```bash # Create 3 folders python create_folders.py . folder1 folder2 folder3 # Create folders with specific names python create_folders.py ./projects experiments learning personal ``` ### 2. Move Multiple Files Move multiple files to a target directory in a single operation. ### Features - Move multiple files at once - Supports files from different directories - Reports success and failure for each file ### Example ```bash # Move 3 files to archive folder python move_files.py ./archive file1.txt file2.txt file3.txt # Move files from different directories python move_files.py ./backup ./data/log1.txt ./data/log2.txt ./temp/cache.dat ``` ### 3. List All Files Recursively list all files under a given directory path. Useful for quickly understanding project directory structure. ### Features - Recursively traverse all subdirectories - Option to exclude hidden files (like .DS_Store) - Output one file path per line, including both path and filename (relative to input directory) ### Example ```bash # List all files (excluding hidden) python list_all_files.py . # Include hidden files python list_all_files.py ./data --include-hidden ``` --- ### 4. Extract Authors Extract authors from all HTML papers in a directory using `` tags. ### Features - Automatically scan all HTML files in directory - Extract author names from citation_author meta tags - Support multiple authors per paper - Returns list of dicts with filename and authors ### Example ```bash # Extract and print authors from all HTML files python extract_authors.py ./papers # Save to file python extract_authors.py ./papers --output authors.txt ``` --- ## II. Basic Tools (FileSystemTools) Below are the basic tool functions. These are atomic operations for flexible combination. **Prefer Skills over Basic Tools**: When a task matches one of the Skills above (e.g., creating multiple folders), use the corresponding Skill instead of Basic Tools. Skills are more efficient because they can perform batch operations in a single call. **Prefer List All Files over list_directory/list_files**: When you need to list files in a directory, prefer using the `list_all_files.py` skill instead of `list_directory` or `list_files` basic tools. The skill provides recursive listing with better output formatting. **Note**: Code should be written without line breaks. ### How to Run ```bash # Standard format python run_fs_ops.py -c "await fs.read_text_file('./file.txt')" ``` --- ### File Reading Tools #### `read_text_file(path, head=None, tail=None)` **Use Cases**: - Read complete file contents - Read first N lines (head) or last N lines (tail) **Example**: ```bash python run_fs_ops.py -c "await fs.read_text_file('./data/file.txt')" ``` --- #### `read_multiple_files(paths)` **Use Cases**: - Read multiple files simultaneously - Use when reading a large number of files (e.g., multiple paper html pages) **Example**: ```bash python run_fs_ops.py -c "await fs.read_multiple_files(['./a.txt', './b.txt'])" ``` --- ### File Writing Tools #### `write_file(path, content)` **Use Cases**: - Create new files - Overwrite existing files **⚠️ Warning**: Do NOT include triple backticks (` ``` `) in the content, as this will break command parsing. **Example**: ```bash python run_fs_ops.py -c "await fs.write_file('./new.txt', 'Hello World')" ``` --- #### `edit_file(path, edits)` **Use Cases**: - Make line-based edits to existing files **Example**: ```bash python run_fs_ops.py -c "await fs.edit_file('./file.txt', [{'oldText': 'foo', 'newText': 'bar'}])" ``` --- ### Directory Tools #### `create_directory(path)` **Use Cases**: - Create new directories (supports recursive creation) **Example**: ```bash python run_fs_ops.py -c "await fs.create_directory('./new/nested/dir')" ``` --- #### `list_directory(path)` **Use Cases**: - List all files and directories in a path **Example**: ```bash python run_fs_ops.py -c "await fs.list_directory('.')" ``` --- #### `list_files(path=None, exclude_hidden=True)` **Use Cases**: - List only files in a directory **Example**: ```bash python run_fs_ops.py -c "await fs.list_files('./data')" ``` --- ### File Operations #### `move_file(source, destination)` **Use Cases**: - Move or rename files/directories **Example**: ```bash python run_fs_ops.py -c "await fs.move_file('./old.txt', './new.txt')" ``` --- #### `search_files(pattern, base_path=None)` **Use Cases**: - Search for files matching a glob pattern **Example**: ```bash python run_fs_ops.py -c "await fs.search_files('*.txt')" ``` --- ### File Information #### `get_file_info(path)` **Use Cases**: - Get detailed metadata (size, created, modified, etc.) **Example**: ```bash python run_fs_ops.py -c "await fs.get_file_info('./file.txt')" ``` --- #### `get_file_size(path)` **Use Cases**: - Get file size in bytes **Example**: ```bash python run_fs_ops.py -c "await fs.get_file_size('./file.txt')" ``` --- #### `get_file_ctime(path)` / `get_file_mtime(path)` **Use Cases**: - Get file creation/modification time **Example**: ```bash python run_fs_ops.py -c "await fs.get_file_mtime('./file.txt')" ``` --- #### `get_files_info_batch(filenames, base_path=None)` **Use Cases**: - Get file information for multiple files in parallel **Example**: ```bash python run_fs_ops.py -c "await fs.get_files_info_batch(['a.txt', 'b.txt'], './data')" ```