#!/bin/sh
mkdir -p todo_buffer
for todo in classes/class*/todo/read.pdf
do
class=${todo%/todo/read.pdf} # Get the name of
class=${class#classes/} # the class directory
ln -s "../$todo" "todo_buffer/$class-read.pdf"
done
Этот сценарий предполагается запускать в родительском каталоге каталога classes
. Он просто создаст каталог todo_buffer
, а затем перейдет к путям к файлам read.pdf
в подкаталогах todo
каждого класса.
Это предполагает, что структура каталогов ниже каталога classes
такая, как вы показали, с каждым классом, имеющим подкаталог с именем class<something>
.
Для каждого файла read.pdf
создается символическая ссылка в каталоге todo_buffer
.
Символические ссылки указывают на ../classes/.../todo/read.pdf
, т. е. относительно расположения ссылки. Если вам нужны абсолютные пути для ссылок, замените ../
на $PWD/
в вызове ln -s
.
Учитывая следующие каталоги и файлы:
.
|-- classes
| |-- class-1
| | |-- otherFiles.md
| | `-- todo
| | `-- read.pdf
| |-- class-2
| | |-- otherFiles.md
| | `-- todo
| | `-- read.pdf
| `-- class-3
| |-- otherFiles.md
| `-- todo
| `-- read.pdf
`-- script.sh
7 directories, 7 files
Запуск скрипта будет генерировать:
todo_buffer/
|-- class-1-read.pdf ->../classes/class-1/todo/read.pdf
|-- class-2-read.pdf ->../classes/class-2/todo/read.pdf
`-- class-3-read.pdf ->../classes/class-3/todo/read.pdf
0 directory, 3 files