Skip to content

Instantly share code, notes, and snippets.

@sukima
Last active March 3, 2016 17:14
Show Gist options
  • Save sukima/46723e666891c703e7ed to your computer and use it in GitHub Desktop.
Save sukima/46723e666891c703e7ed to your computer and use it in GitHub Desktop.
#!/bin/bash
rename_files() {
title="${1##*${2} - }"
for filename in "$1/"*.*; do
case "${filename##*.}" in
mkv|avi|mp4)
new_path="Downloaded/${2}/${title}-$(basename "$filename")"
echo "moving $filename -> $new_path"
mv "$filename" "$new_path"
;;
esac
done
}
rename_category() {
for path in "Downloads/${1}"*; do
rename_files "$path" "$1"
done
}
rename_category SERIES
rename_category MOVIES

Before

.
├── Downloaded
│   ├── MOVIES
│   └── SERIES
├── Downloads
│   ├── MOVIES\ -\ bar
│   │   ├── bar.mp4
│   │   └── foo.mp4
│   ├── MOVIES\ -\ foo
│   │   ├── bar.mp4
│   │   └── foo.mp4
│   ├── SERIES\ -\ bar
│   │   ├── bar.mp4
│   │   └── foo.mp4
│   └── SERIES\ -\ foo
│       ├── bar.mp4
│       └── foo.mp4
├── after.txt
├── before.txt
└── rename_script.sh

8 directories, 11 files

After

moving Downloads/SERIES - bar/bar.mp4 -> Downloaded/SERIES/bar-bar.mp4
moving Downloads/SERIES - bar/foo.mp4 -> Downloaded/SERIES/bar-foo.mp4
moving Downloads/SERIES - foo/bar.mp4 -> Downloaded/SERIES/foo-bar.mp4
moving Downloads/SERIES - foo/foo.mp4 -> Downloaded/SERIES/foo-foo.mp4
moving Downloads/MOVIES - bar/bar.mp4 -> Downloaded/MOVIES/bar-bar.mp4
moving Downloads/MOVIES - bar/foo.mp4 -> Downloaded/MOVIES/bar-foo.mp4
moving Downloads/MOVIES - foo/bar.mp4 -> Downloaded/MOVIES/foo-bar.mp4
moving Downloads/MOVIES - foo/foo.mp4 -> Downloaded/MOVIES/foo-foo.mp4

.
├── Downloaded
│   ├── MOVIES
│   │   ├── bar-bar.mp4
│   │   ├── bar-foo.mp4
│   │   ├── foo-bar.mp4
│   │   └── foo-foo.mp4
│   └── SERIES
│       ├── bar-bar.mp4
│       ├── bar-foo.mp4
│       ├── foo-bar.mp4
│       └── foo-foo.mp4
├── Downloads
│   ├── MOVIES\ -\ bar
│   ├── MOVIES\ -\ foo
│   ├── SERIES\ -\ bar
│   └── SERIES\ -\ foo
├── after.txt
├── before.txt
└── rename_script.sh

8 directories, 11 files
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment