이전에 이 질문에 대한 질문/답변이 있었다면 죄송합니다. 하지만 제가 검색한 결과 필요한 답변이 제공되지 않았습니다.
내 교과서 구조는 다음과 같습니다: year/semester/course/.... 이 계층 구조 대신 Course/year/semester/....를 사용하고 싶습니다. 더 나은 단일 파일/폴더/folder 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
이는 비파괴적이므로 원래 구조에 영향을 주지 않습니다.