重构文件夹层次结构

重构文件夹层次结构

对不起,如果这个问题之前已经被问过/回答过,但我的搜索没有提供我需要的答案。

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

预先感谢您的时间和回复。

答案1

要确认您现有的树,请执行以下操作 -

# 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

然后使用这样的脚本

#!/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 

这是非破坏性的——不会影响原始结构。

相关内容