"parents"コマンドを使用すると機能しますが、ディレクトリ全体の構造がコピーされるため、最後のディレクトリのみを保持できます。
find /tmp/data/ -type f -name "*.txt" -exec cp --parents {} /u01/ABC/ \;
私が得た結果は次のとおりです。
/u01/ABC/tmp/data/a/1.txt
/u01/ABC/tmp/data/b/1.txt
/u01/ABC/tmp/data/c/1.txt
必要な出力は次のとおりです。
/u01/ABC/a/1.txt
/u01/ABC/b/1.txt
/u01/ABC/c/1.txt
ベストアンサー1
sh -c
コマンドで使用すると、より多くの制御権が得られますfind -exec
。たとえば、次のようにできます。
find ... -exec sh -c '
target="/u01/ABC/$(basename "$(dirname "$1")")"
mkdir -p "$target" && cp --backup "$1" "$target"
' find-sh {} \;