경로를 제한하는 데 어려움을 겪고 있습니다 find
.
나는이 명령을 가지고find ${DIR_PATH} -type f -name ".py" -exec cp --parent {} ${DEST_DIR} \;
이것은 나에게 다음과 같은 결과를 제공합니다.
${DIR_PATH}/a/main.py
${DIR_PATH}/a/b/resources.py
${DIR_PATH}/c/__init__.py
${DIR_PATH}/c/main.py
${DIR_PATH}
이 디렉토리를 봤을 때 나는 확실히 알았습니다. 어떻게 얻을 수 있나요?
a/main.py
a/b/resources.py
c/__init__.py
c/main.py
목표는 대상 디렉터리에 다음 콘텐츠를 가져오는 것입니다.
${DEST_DIR}/a/main.py
${DEST_DIR}/a/b/resources.py
${DEST_DIR}/c/__init__.py
${DEST_DIR}/c/main.py
하지만 나는 이것을 가지고 있습니다 :
${DEST_DIR}/${DIR_PATH}/a/main.py
${DEST_DIR}/${DIR_PATH}/a/b/resources.py
${DEST_DIR}/${DIR_PATH}/c/__init__.py
${DEST_DIR}/${DIR_PATH}/c/main.py
참고: DIR_PATH
및 는 DEST_DIR
sh 파일의 시작 부분에 설정됩니다.
답변1
${DEST_DIR}
절대 경로인 경우 이전에 cd
현재 디렉터리에서 실행하는 것이 한 가지 방법일 수 있습니다 ${DIR_PATH}
. find
이렇게 하면 경로는 find
모두 상대적입니다.
cd "${DIR_PATH}"
find . -type f -name ".py" -exec cp --parent {} "${DEST_DIR}" \;
( DEST_DIR
절대 경로가 아닌 경우 $PWD
앞에 from 접두사를 추가 하세요 cd
.)
당신이 사용할 수있는 rsync
.그것은 마치:
rsync -a --prune-empty-dirs --include "*/" --include="*.py" --exclude="*" "${DIR_PATH}/" "${DEST_DIR}"
(뒤에 슬래시가 있음을 참고하세요 ${DIR_PATH}
)