我的脚本运行正常;它将下载重命名为其文件夹,然后将其移动到特定位置。
#!/bin/bash
shopt -s nullglob
for filename in /User/Downloads/{SERIES,MOVIES}/*.{mkv,avi,mp4}; do
new_path="$(dirname $filename).${filename##*.}"
new_path="${new_path/Downloads/Downloaded/SERIES}"
echo "moving $filename -> $new_path"
mv "$filename" "$new_path"
done
我想为它添加一些功能以适应其他情况,但我不知道如何实现它们。
我想做的是:
目前,名为Episode1.mkv
的文件已重命名为SERIES.mkv
,并已移至Downloaded/SERIES
。我想要做的是,如果文件夹是SERIES - Breaking
,那么该文件将被重命名为Breaking.mkv
(所以没有SERIES -
)。
目前,它仅将下载的文件移至Downloaded/SERIES
。我想要做的是,如果文件的文件夹为Downloaded/SERIES
,文件会移至SERIES -
,如果文件夹为Downloaded/MOVIES
,则会移至MOVIES -
。
答案 0 :(得分:1)
如何将其分解为可以在每种类型上调用的函数:
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
作为一个例子,我从这开始:
.
├── 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
我得到running the script之后:
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
编辑:OP有兴趣从…/SERIES - BlahBlah/blah.ext
转到…/SERIES/BlahBlah-blah.ext
我相信。