2017-06-21 116 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

相關問題