将父文件夹的文件复制到新目录

将父文件夹的文件复制到新目录

我想复制一些文件并将其父目录包含在该过程中。

当前的结构类似于:

/Module1/A/downloads/m13312/file.pdf
/Module1/A/downloads/m17312/file.pdf
/Module1/B/downloads/m18312/file.pdf
/Module2/A/downloads/m19312/file.pdf

我想抓住路径的最后两部分,以便最终得到:

/mydir/m13312/file.pdf
/mydir/m17312/file.pdf
/mydir/m18312/file.pdf
/mydir/m19312/file.pdf

我尝试使用cutawk获得正确的结果,但我似乎无法获得正确返回的路径。这是一个只是回应我需要的示例(我还没有到达复制部分):

find . -type 'f' -path '*downloads*' -print0 | xargs -0 -I {} echo `cut -d/ -f4-5 <<<{}`

这只是打印出整个路径,所以我知道我还不能使用它。

答案1

如果您pax支持该-0选项:

find . -type 'f' -path '*downloads*' -print0 |
  pax -rw0s'|.*downloads/||' /mydir

答案2

这应该可以做到:

for file in /Module*/*/downloads/m13312/file.pdf
do
    file_directory="/mydir/$(basename "$(dirname "$file")")"
    mkdir -p "$file_directory"
    cp "$file" "$file_directory"
done

相关内容