Google Drive CLI
Command-line interface for Google Drive operations.
Installation
bash
npm install -g @mariozechner/gdcli
Setup
Google Cloud Console (one-time)
- •Create a new project (or select existing)
- •Enable the Google Drive API
- •Set app name in OAuth branding
- •Add test users (all Gmail addresses you want to use)
- •Create OAuth client:
- •Click "Create Client"
- •Application type: "Desktop app"
- •Download the JSON file
Configure gdcli
First check if already configured:
bash
gdcli accounts list
If no accounts, guide the user through setup:
- •Ask if they have a Google Cloud project with Drive API enabled
- •If not, walk them through the Google Cloud Console steps above
- •Have them download the OAuth credentials JSON
- •Run:
gdcli accounts credentials ~/path/to/credentials.json - •Run:
gdcli accounts add <email>(use--manualfor browserless OAuth)
Usage
Run gdcli --help for full command reference.
Common operations:
- •
gdcli <email> ls [folderId]- List files/folders - •
gdcli <email> ls --query "<query>"- List with Drive query filter - •
gdcli <email> search "<text>"- Full-text content search - •
gdcli <email> download <fileId> [destPath]- Download a file - •
gdcli <email> upload <localPath> [--folder <folderId>]- Upload a file - •
gdcli <email> mkdir <name>- Create a folder - •
gdcli <email> share <fileId> --anyone- Share publicly
Search
Two 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!
Query Syntax (for ls --query)
Format: field operator value. Combine with and/or, group with ().
Operators: =, !=, contains, <, >, <=, >=
Examples:
bash
# 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
Data Storage
- •
~/.gdcli/credentials.json- OAuth client credentials - •
~/.gdcli/accounts.json- Account tokens - •
~/.gdcli/downloads/- Default download location