回答:
いいえ、cp
複数のソースをコピーできますが、単一の宛先にのみコピーします。cp
目的に応じて、宛先ごとに1回ずつ、複数回呼び出すように調整する必要があります。あなたが言うように、ループや他のツールを使用します。
あなたがこれを行うことができないcp
だけでなく、あなたは組み合わせることができますcp
とxargs
:
echo dir1 dir2 dir3 | xargs -n 1 cp file1
コピーするfile1
にはdir1
、dir2
とdir3
。 これを行うには3回xargs
呼び出しcp
ますxargs
。詳細については、manページを参照してください。
cp
一人でこれを行うことはできません」別の方法を提案することによって回答が役立つように試みたからといって、質問が回答されなかったわけではありません。
echo dir[1-3] | xargs -n 1 cp filename
)では使用できます。
私が見る限り、以下を使用できます:
ls | xargs -n 1 cp -i file.dat
コマンドの-i
オプションはcp
、現在のディレクトリのファイルをで上書きするかどうかを尋ねられることを意味しますfile.dat
。完全に自動化されたソリューションではありませんが、私にとってはうまくいきました。
-i
ガードを追加したのは良いことですが、すべてのファイルを上書きすることについてプロンプトが表示されませんか?ディレクトリにコピーするのではなく?
cp: overwrite
質問が出力されましたが、それらに答える必要はなく、ファイルを上書きすることもありませんでした。
私は/superuser/32630/parallel-file-copy-from-single-source-to-multiple-targetsではなく、で見た回答を使用してcat
それにtee
基づいています。cp
例えば:
cat inputfile | tee outfile1 outfile2 > /dev/null
cat <inputfile> | tee /path-to-files/outfile{1..4} > /dev/null
tee < inputfile outfile1 outfile2 > /dev/null
Tayweeの回答が示すように、これも便利なパターンです。catからのパイピングが不要になるように、「<」でのio-redirectionの使用に注意してください。
それ自体はcpを使用していませんが、...
これは、(遅い)SDカードから3つの(遅い)USBドライブに多数のGoproフッテージをコピーする場合に思い付きました。時間がかかったので、一度だけデータを読みたかった。そして、私はそれを再帰的にほしかった。
$ tar cf - src | tee >( cd dest1 ; tar xf - ) >( cd dest2 ; tar xf - ) | ( cd dest3 ; tar xf - )
(さらに出力が必要な場合は、それらの>()セクションをさらに追加できます。)
ベンチマークはしていませんが、cp-in-a-loop(または多数の並列cp呼び出し)よりも明らかに高速です。
いいえ、あなたがすることはできません。
この機能を使用できることが何度かわかったので、これを行うための独自のツールを作成しました。
http://github.com/ddavison/branch
ものすごく単純 -
branch myfile dir1 dir2 dir3
/e
たとえば、各マシンで1回だけクラウドWebディレクトリをマウントする方法があった場合、私は自分のpowertoolsを記述してそれらを永久に保持することができました。
bashスクリプトの使用
DESTINATIONPATH[0]="xxx/yyy"
DESTINATIONPATH[1]="aaa/bbb"
..
DESTINATIONPATH[5]="MainLine/USER"
NumberOfDestinations=6
for (( i=0; i<NumberOfDestinations; i++))
do
cp SourcePath/fileName.ext ${DESTINATIONPATH[$i]}
done
exit
すべてのターゲットディレクトリがパス式に一致する場合(それらがすべてのサブディレクトリであるなど)、次のように組み合わせてpath/to
使用find
しcp
ます。
find ./path/to/* -type d -exec cp [file name] {} \;
それでおしまい。
find
、スレッドで使用している他のすべての回答に反対票を投じたことを願っています。
これは直下のサブディレクトリにコピーされ-maxdepth
ます。さらに深くしたい場合は、パラメーターを調整します。
find . -mindepth 1 -maxdepth 1 -type d| xargs -n 1 cp -i index.html
すべてのディレクトリにコピーしたくない場合は、必要のないディレクトリをフィルターに掛けることができます。で始まるすべてのフォルダーにコピーする例 a
find . -mindepth 1 -maxdepth 1 -type d| grep \/a |xargs -n 1 cp -i index.html
ディレクトリの任意の/ばらばらのセットにコピーする場合は、Robert Gambleの提案が必要になります。
ファイルを複数のディレクトリにcp file1 /foo/; cp file1 /bar/; cp file1 /foo2/; cp file1 /bar2/
コピーしたい:
ディレクトリを他のディレクトリにコピーする:
cp -r dir1/ /foo/; cp -r dir1/ /bar/; cp -r dir1/ /foo2/; cp -r dir1/ /bar2/
これはいくつかのコマンドを発行するようなものですが、1行入力してしばらく離れたい場合に適しています。
たとえば、宛先フォルダの親ディレクトリにいる場合は、次のことができます。
$(ls);のi cp sourcefile $ iを実行します。終わった
ls
。常に変数を引用してください。 for i in ./*; do cp sourcefile "$i"; done