A little tool to help organize files easier.
This project is a small prototype from my early days of learning Golang, approximately 10 years ago.
While it may still be functional, it has undergone limited testing.
Caution is advised, particularly in production environments.
Every commit generates a log, enabling easy reversion if necessary.
However, please be mindful of potential risks before proceeding.
Get Go from https://go.dev/doc/install
Or via package manager: chocolatey:
choco install go
Check go version
go version
Install via go command:
go install github.com/kwchang0831/fog@latest
Move files in the folder in current directory out of their folders.
fog folderout "." -w
"."
: Target directory. Defaults to "."
if omitted.
-w
: Commit changes. Without the flag wil be dry run.
Before | After |
---|---|
|
.
├── SomeVideo_S01E01.mp4
├── SomeVideo_S01E01.jpg
├── SomeVideo_S01E02.avi
Move SomeVideo_SXXEXX into their individual folder.
fog folderin "." -w
"."
: Target directory. Defaults to "."
if omitted.
-w
: Commit changes. Without the flag wil be dry run.
Before | After |
---|---|
|
.
├── SomeVideo_S01E01
├── SomeVideo_S01E01.mp4
├── SomeVideo_S01E01.jpg
├── SomeVideo_S01E02
├── SomeVideo_S01E02.avi
Undo committed actions from target log file.
fo revert -w [pathToTheLog]
-w
: Commit changes. Without the flag wil be dry run.
fog replacename "\[Bad\]" "" -d "." -w
-d
: Set directory.
-w
: Commit changes. Without the flag wil be dry run.
Before | After |
---|---|
|
.
├── [Bad]SomeVideo_Folder[Bad]
├── SomeVideo_S01E01.mp4
├── SomeVideo_S01E02.avi
fog replacename "\[Bad\]" "" -d "." -m1 -w
-d
: Set directory.
-w
: Commit changes. Without the flag wil be dry run.
-m1
: Mode 1: Folder name only.
Before | After |
---|---|
|
.
├── SomeVideo_Folder
├── [Bad]SomeVideo_S01E01[Bad].mp4
├── [Bad]SomeVideo_S01E02[Bad].avi
fog replacename "\[Bad\]" "" -d "." -m2 -w
-d
: Set directory.
-w
: Commit changes. Without the flag wil be dry run.
-m2
: Mode 2: Folder and File name.
Before | After |
---|---|
|
.
├── SomeVideo_Folder
├── SomeVideo_S01E01.mp4
├── SomeVideo_S01E02.avi
fog replacename "(.*)(SomeVideo)(.*)(S[0-9]+E[0-9]+)(.*)(\.(mp4|avi))" "$2-$4$6" -d "." -w
-d
: Set directory.
-w
: Commit changes. Without the flag wil be dry run.
Learn more and try regex, see regex101.
Before | After |
---|---|
|
.
├── SomeVideo-S01E01.mp4
├── SomeVideo-S01E02.avi
For more information, please check help command.
fog
Output
File Organizer in Go provides commands to help you batch edit filenames and organize files.
Usage:
fog [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
folderin move files into their own folders.
folderout Move files out of folders
help Help about any command
move Move matching files/folders into target directory.
renameafterfolder Rename files inside matching folders with the folder name.
replacename Replace name using the search pattern and replace pattern.
revert revert commands issued.
rmemptydir remove empty folders.
Flags:
-h, --help help for fog
Use "fog [command] --help" for more information about a command.
Upgrade dependencies
go get -u
Get dependencies
go mod tidy
Build
go build
from https://github.com/kwchang0831/fog
No comments:
Post a Comment