将文件/文件夹移动到新位置并将其父文件夹结构保留在目标

时间:2017-06-21 16:01:44

标签: bash unix

寻找可以执行以下操作的自动化方法(bash脚本)。

我必须将大量特定文件和文件夹移动到另一个新位置,但需要确保通过维护其父文件夹结构来复制这些文件。

来源

Example 1: [primary] > [folder-a] > [folder-a1] > [xyz_out]

Example 2: [primary] > [folder-b] > [folder-b1 ] > a.pdf

将文件夹xyz_1和文件a.pdf复制到辅助文件夹,如下所示。

目标

示例1:     [二级]> [folder-a]> [folder-a1]> [xyz_out]

示例2:     [二级]> [folder -b]> [folder_b1]> a.pdf

注意:[Primary]位置包含更多文件,但我只需要复制xyz_out和a.pdf文件。 xyz_out文件夹在主位置的许多文件夹中很常见。

1 个答案:

答案 0 :(得分:1)

假设[xyz_out]是dir,您可以执行以下命令以满足您的要求。相应地调整[primary]和[secondary]目录路径。使用完整的系统路径,以便我从任何地方运行此脚本。

例如:移动目录保留目录结构

find /<fullpath>/[primary]  -type d -name "[xyz_out]" | while     read f
do
     path=$(dirname "$f" | sed -re 's/[primary](\/)?/[secondary] \1/')
     echo "$f -> $path"
     mkdir -p "$path"
     mv "$f" "$path"
done`

示例2:移动文件保留目录结构

find /<fullpath>[primary]  -type f -name "*.pdf"  | while read f
do
     path=$(dirname "$f" | sed -re 's/[primary](\/)?/[secondary] \1/')
     echo "$f -> $path"
     mkdir -p "$path"
     mv "$f" "$path"
done