Welcome to bulk-mv’s documentation!
Indices and tables
Usage
When you run bmv <path>
, a bulk-mv (bmv) file will open in a vim
buffer, representing the file tree starting in the directory located at
<path>
.
Then, you can make your modifications in the vim buffer, and run :wq
to perform the changes.
Suppose your directory file tree was this:
.
├── README.md
└── web
├── public
│ └── photos
│ └── logo.png
└── static
├── javascript
│ ├── auth.js
│ └── main.js
└── styles
└── main.css
Then running bmv <path>
will open up the following bmv file in a vim
buffer:
[./] {
README.md
[web] {
[public] {
[photos] {
logo.png
}
}
[static] {
[styles] {
main.css
}
[javascript] {
auth.js
main.js
}
}
}
}
Some Use Cases
Renaming multiple files
Moving multiple directories
BMV Syntax
Here’s how to use the only four operators in BMV (+
, -
, >
,
>>
) to add, delete, rename, and move files and/or directories.
Creating new files/directories
You can add files or directories using the +
operator.
Here’s how to use it to add new files and directories
[./] {
README.md
[web] {
[public] {
[photos] {
logo.png
}
}
+ [templates] {
+ [dashboard] {
dashboard.html
admin.html
}
index.html
about.html
}
[static] {
[styles] {
main.css
+ dashboard.css
}
[javascript] {
auth.js
main.js
}
}
}
}
Notice how you can add multiple nested directories. If you want to add a
single file you need to type + new_file.txt
in the directory block
where you want it.
If you create a new directory with (also new) files inside of it, you
don’t need to use the +
operator to add them. But for new nested
directories, you do need to use the +
operator.
Deleting files/directories
You can delete files or directories using the -
operator.
You can delete entire directories or files like this:
[./] {
README.md
[web] {
[public] {
[photos] {
logo.png
}
}
[static] {
- [styles] {
main.css
}
[javascript] {
- auth.js
main.js
}
}
}
}
Running this would delete the ./web/static/javascript/auth.js
file
as well as the ./web/static/styles/
folder (and of course everything
in it).
Renaming files/directories
You can rename files or directories using the >
operator.
[./] {
README.md
[web] {
[public] {
[photos > images] {
logo.png
}
}
[static] {
[styles] {
main.css
}
[javascript] {
auth.js
main.js > script.js
}
}
}
}
Running this would rename the ./web/public/photos/
directory to
./web/public/images/
, and rename ./web/static/javascript/main.js
to ./web/static/javascript/script.js
Moving files/directories
You can move files or directories using the >>
operator. Moving
files to paths with non-existent directories will not be created
automatically.
[./] {
README.md >> ./web
[web] {
[public] {
[photos >> ./web/static] {
logo.png
}
}
[static] {
[styles] {
main.css
}
[javascript] {
auth.js
main.js
}
}
}
}
Running this would move ./README.md
to ./web/README.md
, and move
./web/public/photos/
to ./web/static/photos
.
You currently have to specify the full path to the directory you want to
move the file/directory to starting from root path of the file tree (in
this case, it’s ./
).
Putting it all together.
Of course, you can mix and match these operations all in one go. Just note the order of operations to avoid making a mistake, like moving a file to a directory that you haven’t created yet, for example.
Operations are given the following precedence:
add
delete
rename (files first, then directories)
move (files first, then directories)