Google Drive CLI for listing, searching, uploading, downloading, and sharing files and folders.
Command-line interface for Google Drive operations.
npm install -g @mariozechner/gdcli
First check if already configured:
gdcli accounts list
If no accounts, guide the user through setup:
gdcli accounts credentials ~/path/to/credentials.jsongdcli accounts add <email> (use --manual for browserless OAuth)Run gdcli --help for full command reference.
Common operations:
gdcli <email> ls [folderId] - List files/foldersgdcli <email> ls --query "<query>" - List with Drive query filtergdcli <email> search "<text>" - Full-text content searchgdcli <email> download <fileId> [destPath] - Download a filegdcli <email> upload <localPath> [--folder <folderId>] - Upload a filegdcli <email> mkdir <name> - Create a foldergdcli <email> share <fileId> --anyone - Share publiclyTwo different commands:
search "<text>" - Searches inside file contents (fullText)ls --query "<query>" - Filters by metadata (name, type, date, etc.)Use ls --query for filename searches!
Format: field operator value. Combine with and/or, group with ().
Operators: =, !=, contains, <, >, <=, >=
Examples:
# By filename
ls --query "name = 'report.pdf'" # exact match
ls --query "name contains 'IMG'" # prefix match
# By type
ls --query "mimeType = 'application/pdf'"
ls --query "mimeType contains 'image/'"
ls --query "mimeType = 'application/vnd.google-apps.folder'" # folders
# By date
ls --query "modifiedTime > '2024-01-01'"
# By owner/sharing
ls --query "'me' in owners"
ls --query "sharedWithMe"
# Exclude trash
ls --query "trashed = false"
# Combined
ls --query "name contains 'report' and mimeType = 'application/pdf'"
Ref: https://developers.google.com/drive/api/guides/ref-search-terms
~/.gdcli/credentials.json - OAuth client credentials~/.gdcli/accounts.json - Account tokens~/.gdcli/downloads/ - Default download location