首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重新构造文件夹层次结构

重新构造文件夹层次结构
EN

Unix & Linux用户
提问于 2021-04-01 22:58:30
回答 1查看 55关注 0票数 0

如果这个问题以前有人问过/回答过,但我的搜索没有给出我所需要的答案,请原谅。

我的教材结构如下:年份/学期/课程/.我不想使用这个层次结构,而是使用课程/年度/学期/.如何用更好的单行bash脚本移动文件/文件夹?年份: 2006 - 2021学期:秋季-春季课程:8门不同的课程(他们有其他几个子文件夹,我想暂时保留)

提前感谢您的时间和回应。

EN

回答 1

Unix & Linux用户

发布于 2021-04-02 00:01:48

为了确认你现存的树,做这样的事-

代码语言:javascript
运行
复制
# find . -type d -depth 3 -print | grep -E '20\d+' | sort
./2006/autumn/Course101
./2006/autumn/Course102
./2006/autumn/CourseA103
./2006/fall/Course101
./2006/fall/Course102
./2006/fall/CourseA103
./2006/spring/Course101
./2006/spring/Course102
./2006/spring/CourseA103
./2006/summer/Course101
./2006/summer/Course102
./2006/summer/CourseA103
./2007/autumn/Course101
./2007/autumn/Course102

然后使用像这样的脚本

代码语言:javascript
运行
复制
#!/bin/sh

# Takes source directories as input and copies everything to the destination
#!/bin/sh

makeNewStructure() {
    while read line; do
        newdir=$( echo "$line" |sed -e 's#^\./#/#' -e 's#\(/[^/]*\)\(/[^/]*\)\(/[^/]*\)$#.\3\1\2#' )
        mkdir -p "$newdir"
        cp -r "$line"/* "$newdir"
    done
}


find . -type d -depth 3 -print | grep -E '/20\d+/' | sort | makeNewStructure 

这是无损的-它不会影响原来的结构。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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