Реструктурировать иерархию папок

Один из способов сделать это в Linux — передать данные с помощью временного файла(<<<иногда используется временный файл ).

{
  output=$(cmd1 | cmd2 | cmd3; printf '%s\n' "${PIPESTATUS[@]}" > /dev/fd/3)
  readarray -t cmdsubst_pipe_status <&3
} 3<<< ''
printf '%s\n' "cmd1's status: ${cmdsubst_pipe_status[0]}"
0
02.04.2021, 01:58
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 

Это не -деструктивное -оно не повлияет на первоначальную структуру.

0
28.04.2021, 22:54

Теги

Похожие вопросы