对不起,如果这个问题之前已经被问过/回答过,但我的搜索没有提供我需要的答案。
我的教材结构如下:年/学期/课程/....而不是这种层次结构,我想使用课程/年/学期/....我将如何使用更好的单个文件/文件夹移动文件/文件夹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
这是非破坏性的——不会影响原始结构。