我的媒体目录结构如下:
~ $ tree baz
baz
├── Ajin [Season 1]
│ ├── Ajin Demi-Human - 01 - A Topic That Has Nothing to Do with Us.mkv
│ ├── Ajin Demi-Human - 02 - Why Is This Happening to Me I Didn`t Do Anything Wrong!.mkv
...snip...
├── Btooom!
│ ├── Btooom! - 01 - Start.mkv
│ ├── Btooom! - 02 - The Bloodstained High School Girl.mkv
...snip...
└── Claymore [Dual Audio]
├── checksums.md5
├── Claymore - 01 - Great Sword.mkv
├── Claymore - 02 - The Black Card.mkv
├── Claymore - 03 - The Darkness in Paradise.mkv
...snip...
3 directories, 53 files我需要横越baz目录,并为每个子目录创建一个名为“第01季”的子目录,并将所有文件(和任何目录)放入新创建的子目录“第01季”。
例如,上述情况将成为:
baz
├── Ajin [Season 1]
│ ├── Season 01
│ ├── Ajin Demi-Human - 01 - A Topic That Has Nothing to Do with Us.mkv
│ ├── Ajin Demi-Human - 02 - Why Is This Happening to Me I Didn`t Do Anything Wrong!.mkv
...snip...
etc我试图使用find来完成这个任务,但是我想不出如何构造-exec命令来创建“第01季”目录,并将目录的内容移到新的目录中。
谢谢
发布于 2020-06-15 02:14:09
你只需要一个简单的循环。
cur=$(pwd)
for i in baz/*
do
cd "$i"
mkdir season1
mv *.mkv season1
cd "$cur"
done发布于 2020-06-15 02:53:23
使用bash:
shopt -s dotglob
for i in baz/*/*; do
mkdir -p "${i%/*}/Season 01"
mv "$i" "${i%/*}/Season 01"
done首先,让dotglob也能匹配隐藏的文件。然后循环遍历baz子目录中的文件和
Season 01目录还不存在,就创建它。参数展开${i%/*}移除文件名并保留父目录(例如,baz/Ajin [Season 1])。"$i"移到季节目录中。https://unix.stackexchange.com/questions/592922
复制相似问题