首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将目录内容移至静态命名子目录

将目录内容移至静态命名子目录
EN

Unix & Linux用户
提问于 2020-06-15 01:54:09
回答 2查看 31关注 0票数 0

我的媒体目录结构如下:

代码语言:javascript
复制
~ $ 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季”。

例如,上述情况将成为:

代码语言:javascript
复制
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季”目录,并将目录的内容移到新的目录中。

谢谢

EN

回答 2

Unix & Linux用户

发布于 2020-06-15 02:14:09

你只需要一个简单的循环。

代码语言:javascript
复制
cur=$(pwd)
for i in baz/*
do
    cd "$i"
    mkdir season1
    mv *.mkv season1
    cd "$cur"
done
票数 0
EN

Unix & Linux用户

发布于 2020-06-15 02:53:23

使用bash

代码语言:javascript
复制
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"移到季节目录中。
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/592922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档