2017-06-21 112 views
-1

寻找可以做到以下操作的自动方法(bash脚本)。将文件/文件夹移动到新位置并在目的地保留其父文件夹结构

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

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

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

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

目的地

实施例1: [二次]> [文件夹-A]> [文件夹-A1]> [xyz_out]

实施例2: [二次]> [文件夹-b]> [folder_b1]> a.pdf

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

+1

请[编辑]你的问题,以显示[你有这么远的代码( http://whathaveyoutried.com)。你至少应该包括一个你遇到问题的代码大纲(但最好是[mcve]),然后我们可以尝试帮助解决具体问题。你还应该阅读[问]。 –

回答

1

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

例如:转存目录保留目录结构

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 
+0

感谢ukrip,让我尝试一下。感谢你的帮助。 – bbh

+0

谢谢你的完美答案。这真的解决了这个问题。 – bbh

相关问题