以前にこの質問に関する質問/回答があった場合は申し訳ありません。しかし、私が検索した結果、必要な答えは提供されませんでした。
私の教科書の構造は次のとおりです。year/semester/course/....この階層の代わりにCourse/year/semester/....を使用したいと思います。より良い単一ファイル/フォルダ/フォルダ 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
これは非破壊的であるため、元の構造には影響しません。