如果这个问题以前有人问过/回答过,但我的搜索没有给出我所需要的答案,请原谅。
我的教材结构如下:年份/学期/课程/.我不想使用这个层次结构,而是使用课程/年度/学期/.如何用更好的单行bash脚本移动文件/文件夹?年份: 2006 - 2021学期:秋季-春季课程:8门不同的课程(他们有其他几个子文件夹,我想暂时保留)
提前感谢您的时间和回应。
发布于 2021-04-02 00:01:48
为了确认你现存的树,做这样的事-
# 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
这是无损的-它不会影响原来的结构。
https://unix.stackexchange.com/questions/643161
复制相似问题