.txt
파일 형식을 특정 폴더로 이동하는 스크립트가 있습니다 . 작업 폴더에서 파일을 찾아 완성된 폴더로 이동합니다.
예를 들어 .txt
폴더 /tmp/swan/test/work
및 폴더 에 파일이 있는 경우 /tmp/swan/test11/work
해당 파일을 각각 /tmp/swan/test/completed
및 로 이동해야 합니다 /tmp/swan/test11/completed
.
.txt
또한 하위 폴더에 해당 파일이 있으면 /tmp/swan/test11/work/APX
해당 파일도 으로 이동해야 합니다 /tmp/swan/test11/completed
.
아래는 내 스크립트입니다. 이제 스크립트는 작업 폴더에서 파일을 올바르게 이동하지만 하위 폴더(즉, 작업/완료 폴더)에서 해당 완료 폴더로 파일을 이동하지 않습니다.
#!/bin/bash
MY_DIR=/tmp/swan
cd $MY_DIR
find . -path "*work*" -iname "*.txt" -type f -execdir mv '{}' ../completed \;
답변1
가설
- 중첩된 작업 디렉터리가 아님
- 흥미로운 이름이 없습니다
노력하다
MY_DIR=/tmp/swan
cd $MY_DIR
for w in */work
do
find $w -path "*work*" -iname "*.txt" -type f -execdir mv '{}' $MY_DIR/$w/completed \;
done
이렇게 하면 파일이 "work"와 동일한 세 번째 이름인 "completed"라는 네 번째 수준 디렉터리로 전송됩니다.
작업 디렉터리가 중첩되지는 않았지만 임의 수준에 있는 경우
MY_DIR=/tmp/swan
cd $MY_DIR
find $MY_DIR -type d -name \*work\* -print | while read w
do
find $w -path "*work*" -iname "*.txt" -type f -execdir mv '{}' $MY_DIR/$w/completed \;
done