GitHub에서 찾은 썸네일 생성기 Python 스크립트를 사용하려고 하는데 정말 잘 작동합니다.
이름이 지정된 폴더에 썸네일을 생성한 eaDir_temp
다음 터미널에서 NAS의 이름을 바꿔야 합니다 @eaDir
. 저자는 이에 대해 다음과 같은 명령을 제공합니다.
find . -type d -name 'eaDir_tmp' -exec mv '{}' @eaDir \;
안타깝게도 사진이 포함된 모든 하위 폴더에 대해 다음이 반환됩니다.
mv: cannot move ‘./subfolder/eaDir_tmp’ to ‘@eaDir/eaDir_tmp’: Directory not empty
나는 무엇을 해야 합니까?
답변1
궁금한 사람들을 위해 어떤 일이 일어날 수 있는지: 명령
find . -type d -name 'eaDir_tmp' -exec mv '{}' @eaDir \;
찾은 각 ./whatever/eaDir_tmp
디렉토리(예: 구성 요소 ) eaDir_tmp
를 현재 작업 디렉토리로 이동합니다: ./whatever/eaDir_tmp
→ ./@eaDir
. ( 경로 구성 요소는 현재 작업 디렉터리를 기준으로 @eaDir
간주되기 때문입니다.)mv
처음에는 ./@eaDir
아직 존재하지 않는 경우 생성됩니다.
두 번째로 ./whatever/eaDir_tmp
찾은 것은 이사했습니다입력하다 ./@eaDir
, 왜냐하면 이 시점에서 주어진 대상 디렉터리 mv
( )가 이미 존재하기 때문입니다: → .@eaDir
./whatever/eaDir_tmp
./@eaDir/eaDir_tmp
추가 검색도 ./subfolder/eaDir_tmp
이동됩니다. 이 단계는 이미 존재하고 비어 있지 않기 때문에 실패합니다../@eaDir
./@eaDir/eaDir_tmp
당신이 할 수 있는 일: find
구현이 다음을 지원하는 경우 -execdir
:
find . -depth -type d -name 'eaDir_tmp' -execdir mv '{}' @eaDir \;
-depth
eaDir_tmp
이는 실제로 중첩된 디렉터리 (예 : ) 의 경우에만 필요합니다 ./whatever/eaDir_tmp/whatever/eaDir_tmp
.
대신 -exec
, 현재 작업 디렉터리 -execdir
가 아닌 일치하는 파일이 포함된 디렉터리에서 find
지정된 명령을 실행합니다 .
find
비표준을 지원하지 않는 경우 -execdir
:
find . -depth -type d -name 'eaDir_tmp' \
-exec sh -c 'mv "$1" "${1%/*}/@eaDir"' mysh {} \;
또는 발견된 모든 디렉터리에 대해 셸을 시작하지 마세요.
find . -depth -type d -name 'eaDir_tmp' -exec sh -c '
for dir
do
mv "$dir" "${dir%/*}/@eaDir"
done' mysh {} +