ルートを制限するのに苦労しています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
現在のディレクトリで実行する方法が1つあります${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}
)