각 수업에 할 일 폴더가 있도록 여러 수업의 디렉토리를 정리하려고 합니다.
이 같은:
|--classes/
| |--classOne/
| | |--todo/
| | | |--read.pdf
| | |--otherFiles.md
| |--classTwo
| | |--todo/
| | | |--read.pdf
| | |--otherFiles.md
| |--classThree
| | |--todo/
| | | |--read.pdf
| | |--otherFiles.md
모든 개별 폴더의 데이터를 todo_buffer
집계할 수 있는 이 계층 구조 외부에 폴더를 호출 하는 것이 가능한지 궁금합니다 .todo
단지 작은 응용 프로그램을 만드는 것도 가능합니다. 그런데 이 작업을 수행할 수 있는 UNIX 유틸리티가 있습니까? 나는 심볼릭 링크를 따라 생각하고 있습니다.
답변1
stow
심볼릭 링크를 생성하고 유지 관리합니다. 업데이트하려면 실행해야 합니다. 그러나 를 사용하여 inotify-wait
업데이트를 트리거할 수 있습니다.
답변2
#!/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
답변3
귀하의 요청과 질문의 배경을 더 자세히 설명해 주시겠습니까?
모든 할일 폴더를 더 쉽게 채울 수 있도록 모든 할일 폴더를 채운 후 또는 전에 todo_buffer 폴더를 집계하는 "도구"를 사용합니까?
각 개별 할일 폴더에는 유사한 파일 이름(예제와 같이)이 포함되어 있지만 실제 내용은 서로 다른가요?
기호 링크는 여러분이 찾고 있는 것일 수 있지만(그러나 약간의 스크립트를 작성해야 할 것 같습니다) 실제로는 여러분이 달성하려는 목표에 따라 다릅니다.
심볼릭 링크는 복사 또는 이동과 동일한 논리로 작동합니다.
ln -s {src} {dst}
여기서 {src}는 링크가 가리켜야 하는 파일이고 {dst}는 기호 이름입니다.
모든 파일이 todo_buffers에 있고 각 todo 폴더에 심볼릭 링크만 생성한다고 가정하면 다음을 수행합니다.
cd {some path}/classes/classOne/todo
ln -s {path to todo_buffer}/todo_buffer/read.pdf read.pdf
cd {some path}/classes/classTwo/todo
ln -s {path to todo_buffer}/todo_buffer/read.pdf read.pdf
cd {some path}/classes/classThree/todo
ln -s {path to todo_buffer}/todo_buffer/read.pdf read.pdf
...