File System to CLI exposes Drupal's file system API as a small set of Drush commands, so you can inspect and manipulate files from the command line and from automation.
Every command runs through Drupal's file_system service rather than touching the disk directly. That means operations honor Drupal stream wrappers: public://, private://, temporary://, and remote backends such as s3:// (via the S3 File System module). A script behaves the same whether the files live on local disk or in object storage.
Each command returns machine-readable JSON. This makes the module a good fit for deployment pipelines, CI jobs, and infrastructure tooling that needs to act on the result of a file operation without writing custom PHP.
Requirements
- Drupal 10 or 11.
- Drush 12 or newer.
Installation
Install with Composer, then enable the module:
composer require drupal/fs_cli
drush pm:enable fs_cli
No configuration is required.
Commands
| Command | Alias | Description |
|---|---|---|
fs:file-exists |
fs-fe |
Report whether a file exists. |
fs:directory-exists |
fs-de |
Report whether a directory exists. |
fs:copy [replace] |
Copy a file, creating the destination directory if needed. | |
fs:move [replace] |
Move a file, creating the destination directory if needed. | |
fs:mkdir |
Create a directory. | |
fs:scan-dir |
List the files in a directory that match a regular-expression mask. | |
fs:delete-dir |
Delete a directory and its contents recursively. |
All commands accept a --format option (default json).
For fs:copy and fs:move, the optional replace argument controls what happens when the destination already exists:
-
0â rename: append an incrementing numeric suffix until the name is unique. -
1â replace the existing file (default). -
2â do nothing and return an error.
Examples
# Check whether a file exists on the public file system.
drush fs:file-exists public://logo.png
# Copy a file to S3-backed storage (with S3 File System configured).
drush fs:copy public://export.csv s3://backups/export.csv
# List every JPEG file under a directory.
drush fs:scan-dir public://images '/\.jpg$/'
# Create a working directory and remove it afterwards.
drush fs:mkdir temporary://build
drush fs:delete-dir temporary://build
Maintainers
- Marco Primitivo (Bladedu)
Sponsored by SparkFabrik.
Project information
- Project categories: Administration tools, Developer tools, Media
- Ecosystem: Drush
4 sites report using this module
- Created by bladedu on , updated
Stable releases for this project are covered by the security advisory policy.
Look for the shield icon below.

