私のディレクトリ構造は次のとおりです。
source-dir---
|----- file-1
|----- file-2
|----- file-3
|----- folder-1
|---- file-4
|---- file-5
ソースディレクトリ内のすべてのファイルをターゲットディレクトリにコピーし、同じフォルダ構造を維持したいのですが、file-5
サブディレクトリからコピーしたくありません。
予想されるターゲットディレクトリは次のとおりです。
destination-dir---
|----- file-1
|----- file-2
|----- file-3
|----- folder-1
|---- file-4
cp
コマンド自体を使用して上記の動作を達成できますか?それとも使用する特定のrsync
正規表現コマンドがありますか?find
ベストアンサー1
これはうまくいきます。除外します。file-5
サブディレクトリのすべてのレベルからコピーsource
ディレクトリですが、最上位レベルに存在する場合はそうではありません。
cd /path/to/source
find . ! -path './*/file-5' -type d,f -exec sh -c '
[ -d "$1" ] && echo mkdir -vp "/path/to/dest/$1" || echo cp -v "$1" "/path/to/dest/$1"
' sh_cp {} \;
特定のサブディレクトリからのみ特定のファイルを除外するには、そのディレクトリからのみそのファイルを./folder-1/file-5
除外するかのように厳密に言及してください。
テストの実行結果に満足したら、echo
前のコマンドを削除してください。mkdir
cp