Linuxで1つのファイルを多くのファイルにコピーする1行のコマンド/スクリプトはありますか?
cp file1 file2 file3
最初の2つのファイルを3番目のファイルにコピーします。最初のファイルを残りにコピーする方法はありますか?
する
cp file1 file2 ; cp file1 file3
「1行のコマンド/スクリプト」として数えますか?どう?
for file in file2 file3 ; do cp file1 "$file" ; done
?
または、「コピー」の感覚を少し緩くする場合:
tee <file1 file2 file3 >/dev/null
ファイルの大きなリストが必要な場合は、ただ楽しみのために:
tee <sourcefile.jpg targetfiles{01-50}.jpg >/dev/null
- ケルビン2月12日19時52分
しかし、少し誤字があります。する必要があります:
tee <sourcefile.jpg targetfiles{01..50}.jpg >/dev/null
そして、上記のように、それは許可をコピーしません。
rangesfrombash brace expansionを使用して、コピーのfor
アプローチ(@ruakhで回答)を改善/簡素化できます。 :
for f in file{1..10}; do cp file $f; done
これにより、file
がfile1, file2, ..., file10
にコピーされます。
確認するリソース:
for FILE in "file2" "file3"; do cp file1 $FILE; done
cat file1 | tee file2 | tee file3 | tee file4 | tee file5 >/dev/null
shift
を使用できます:
file=$1
shift
for dest in "$@" ; do
cp -r $file $dest
done
次のようなものを使用します。 zshで動作します。
catファイル> firstCopy> secondCopy> thirdCopy
または
catファイル> {1..100}-数字付きのファイル名用。
小さいファイルに適しています。
大きなファイルには、前述のcpスクリプトを使用する必要があります。
私が考えることができる最も簡単な/最も速い解決策はforループです:
for target in file2 file3 do; cp file1 "$target"; done
汚いハックは次のようになります(私はそれに対して強くお勧めしますが、とにかくbashでのみ動作します)。
eval 'cp file1 '{file2,file3}';'
代わりに、標準のスクリプトコマンドを使用できます。
バッシュ:
for i in file2 file3 ; do cp file1 $i ; done