在 BASH 中,如何在递归 "find" 的文件复制语句中引用目录名称

In BASH, how do you reference a directory name in a copy statement of files you recursively "find"

  1. 我想递归查找所有以 *DETAIL.pdf
  2. 结尾的文件
  3. 为每个与原始目录同名的文件创建一个新目录(在另一个驱动器中)
  4. 将文件复制到新目录

我目前的尝试是: find . -name \*DETAIL.pdf -type f -not -path "./test2" -exec cp -R {} ./test2 \;

我正在努力通过引用每个文件的原始目录名称为所有这些文件创建新目录。

该示例提到使用 cp 但 question/problem 本身没有,所以我建议只使用 findtar。此外,尽管如上面的评论所述,这个问题有点模棱两可,但该示例似乎表明所需的输出目录是正在搜索的同一目录的子目录。鉴于:

find . -path "./test2" -prune -o -type f -name '*DETAIL.pdf' -print0 | \
tar c --null --files-from=- | \
tar xC test2

这使用 find 进行文件选择,生成一个 (null-separated) 文件列表,然后 tar 使用它来复制文件,第二个 tar 将根据需要创建相对目录并写入复制的文件。