寻找可以执行以下操作的自动化方法(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文件夹在主位置的许多文件夹中很常见。
答案 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