複数のファイルとディレクトリを持つディレクトリがあります。ディレクトリとその内容の両方を複数のディレクトリにコピーするにはどうすればよいですか?つまり、同じコンテンツを複数のディレクトリにコピーする必要があります。
答え1
cp
一人では不可能
cp
次回のみコピー一つ目的地。
~から男CP
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
したがって、各ターゲットに対して一度、コマンドを2回実行する必要があります。
他の方法
ただし、以下を使用すると可能です。その他でコマンドを使用してくださいcp
。
~からLinuxでファイルを複数のディレクトリにコピーする方法
xargs
echo directory_1 directory_2 | xargs -n 1 cp file_1
ディレクトリの場合は、次を追加します。-r
echo directory_1 directory_2 | xargs -n 1 cp -r source_directory
find
find directory1 directory2 -exec cp file.txt {} \;
ディレクトリの場合は、次を追加します。-r
find directory1 directory2 -exec cp -r source_directory {} \;
シェルのループ
for dir in *; do [ -d “$dir” ] && cp /full_path/file.txt “$dir” ; done
ディレクトリの場合は、次を追加します。-r
for dir in *; do [ -d “$dir” ] && cp -r /full_path_to/source_directory “$dir” ; done
parallel
parallel cp -v /etc/resolv.conf ::: /directory1/, /directory2/
ディレクトリの場合は、次を追加します。-r
parallel cp -r source_directory ::: /directory1/, /directory2/
tee
代わりに使用cp
同じリンクから
tee ~/directory1/file1 ~/directory2/file1 < ~/file1
または
tee ~/directory1/file1 ~/directory2/file1 < ~/file1 >/dev/nul
答え2
私が知っているすべてのツールには1つのターゲットしかないので、2回だけ実行してくださいcp
(例rsync
:)。
cp -r dir target1
cp -r dir target2
答え3
dstディレクトリのリストが配列変数にある場合は、ループを使用する必要がありますfor
。
srcdir=src/dir
dstdirs=( some/dir some/other/dir dir3 dir4 )
for dir in "${dstdirs[@]}"; cp -a -- "$srcdir" "$dir/"; done
(上記のzsh / bash / ksh93 / mksh構文の-a
GNUオプションを使用してすべてをコピーします。)cp
コマンドが失敗した場合の対処方法を検討してくださいcp
。つまり、ループを中断して全体の終了状態に報告します。
自分はコピーせずに内容だけをコピーするに に置き換えdir
てください。"$srcdir"
"$srcdir/."
zsh
(およびtar
taringの前にディレクトリを入力するオプションをサポートする実装-C
)を使用すると、cd
次のこともできます。
tar -C $srcdir -cf - . > >(tar -C dir1 -xpf -) \
> >(tar -C dir2 -xpf -) \
> >(tar -C dir3 -xpf -)
$srcdir
内容を一度だけ読むティー抽出は、同時に実行される3つのコマンドで行われますtar
。