2017-06-21 17 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])を含める必要があります。次に、特定の問題を解決することができます。 [ask]も読んでください。 –

答えて

1

[xyz_out]がdirであると仮定すると、以下のコマンドを実行して要件を満たすことができます。 [プライマリ]と[セカンダリ]のディレクトリパスをそれに応じて調整します。あなたがどこからでもこのスクリプトを実行できるように、完全なシステムパスを使用してください。例については

:ディレクトリ構造に

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

関連する問題