Minimal Google Drive CLI for listing, searching, uploading, and downloading files.
Install
npm install -g @mariozechner/gdcli
Setup
Before adding an account, you need OAuth2 credentials from Google Cloud Console:
- 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
Then:
gdcli accounts credentials ~/path/to/credentials.json
gdcli accounts add you@gmail.comYou can reuse credentials from gmcli or gccli:
gdcli accounts credentials ~/.gmcli/credentials.jsonUsage
gdcli accounts <action> Account management
gdcli <email> <command> [options] Drive operations
Commands
accounts
gdcli accounts credentials <file.json> # Set OAuth credentials (once) gdcli accounts list # List configured accounts gdcli accounts add <email> # Add account (opens browser) gdcli accounts add <email> --manual # Add account (browserless, paste redirect URL) gdcli accounts remove <email> # Remove account
ls
List files in a folder (default: root).
gdcli <email> ls [folderId] [options]
Options:
--max <n>- Max results (default: 20)--page <token>- Page token for pagination--query <q>- Drive query filter
Examples:
gdcli you@gmail.com ls
gdcli you@gmail.com ls 1ABC123 --max 50
gdcli you@gmail.com ls --query "mimeType='image/png'"search
Full-text search across all files.
gdcli <email> search <query> [--max N] [--page TOKEN]
Example:
gdcli you@gmail.com search "quarterly report"get
Get file metadata.
gdcli <email> get <fileId>
download
Download a file. Google Docs are exported as PDF/CSV.
gdcli <email> download <fileId> [destPath]
Default destination: ~/.gdcli/downloads/
Examples:
gdcli you@gmail.com download 1ABC123 gdcli you@gmail.com download 1ABC123 ./myfile.pdf
upload
Upload a file.
gdcli <email> upload <localPath> [options]
Options:
--name <n>- Override filename--folder <folderId>- Destination folder
Examples:
gdcli you@gmail.com upload ./report.pdf
gdcli you@gmail.com upload ./report.pdf --folder 1ABC123 --name "Q4 Report.pdf"mkdir
Create a folder.
gdcli <email> mkdir <name> [--parent <folderId>]
Example:
gdcli you@gmail.com mkdir "New Folder" --parent 1ABC123delete
Delete a file (moves to trash).
gdcli <email> delete <fileId>
move
Move a file to a different folder.
gdcli <email> move <fileId> <newParentId>
rename
Rename a file or folder.
gdcli <email> rename <fileId> <newName>
share
Share a file or folder.
gdcli <email> share <fileId> [options]
Options:
--anyone- Make publicly accessible (anyone with link)--email <addr>- Share with specific user--role <r>- Permission level:reader(default) orwriter
Examples:
gdcli you@gmail.com share 1ABC123 --anyone gdcli you@gmail.com share 1ABC123 --email friend@gmail.com --role writer
unshare
Remove a permission from a file.
gdcli <email> unshare <fileId> <permissionId>
Get permission IDs with permissions command.
permissions
List permissions on a file.
gdcli <email> permissions <fileId>
url
Print web URLs for files.
gdcli <email> url <fileIds...>
Data Storage
All data is stored in ~/.gdcli/:
credentials.json- OAuth client credentialsaccounts.json- Account tokensdownloads/- Downloaded files
Development
npm install npm run build npm run check
License
MIT