通常の終了で特定のファイルを複数回コピーする方法は?


13

1つのファイル(PDF)があり、同じフォルダー(200がいいでしょう)に多くの同一のコピーを持ちたいfile-001file-002など。

どうすればいいのですか?


いいえ、エラー修正用です。
ティム14

_はタイプミスですか?
リンツウィンド14

@Rinzwindええ!それは面白いかもしれません-それぞれにランダムなキャラクターを選びますか?:p
ティム14

@Tim:まあ、ランダムに生成するために「_」または「 - 」あなたがすることができますprintf "%s\n" "$(cat /dev/urandom | tr -dc '_-' | fold -w 1 | head -n 1 )":-P(およびので、ワームの缶であることを警告するecho -このコーナーケースの一つである...)
Rmano

1
@Rmano私は固執する-と思います:P
ティム14

回答:


22

次のようなことができます

< file tee file-{001..200}

ただし、メディアが読み取り不能になっても、コピーの数は問題になりません。基本的に、バックアップには多様性が必要です。

tee標準入力は、指定された各ファイルと同様に標準出力に書き込まれることに注意してください-大きなファイル、またはバイナリデータや端末設定に干渉する可能性のあるその他の特殊文字を含むファイルの場合、おそらく標準出力をビットバケット

< file > /dev/null tee file-{001..200}

4
tee file-{001..200} < file >/dev/nullより読みやすくなります。このほぼ重複した回答を参照してください:ターミナルの複数のフォルダーにファイルをコピーする方法は?
ラドゥラデアヌ14

21

これは、シェルトリックが非常に役立つ古典的なケースです。

for i in {000..199}; do cp file file-$i; done

そして、私はそれが冗談であることを知っていますが、ランダムにしたい場合_-名前から番号を分離したい 場合は、使用できます:

for i in {000..199}; do 
    cp file file$(cat /dev/urandom | tr -dc '_-' | fold -w 1 | head -n 1 )$i; 
done

(読みやすくするための複数行...)

:-P


1
すべての素数をすべての素数であり_、すべての非素数でありたい場合はどうなり-ますか?1は素数ではなく、0を選択します!:Pジョーク!
ティム14

7

ファイルの単一の複製を作成するには、おそらく以下を使用できることを知っていますcp

cp file file-001

さて、あなたは組み合わせることができ、ファイルへのより多くの複製を作るためcpxargs。あなたの場合:

echo file-{001..200} | xargs -n 1 cp file

コピーするfileにはfile-001file-002、...、 file-200。詳細についてはman xargs、を参照してください。


4

いつものように、Pythonトラックは遅れますが、

実行可能にし、ターミナルウィンドウにドラッグし、ファイルをドラッグしてターミナルウィンドウにコピーし、コピー数を設定します。

script file number_ofcopies

先行ゼロの数は、自動的に設定されるファイルの名前はfile_001.pdffile_002.pdf配置filenumbersして、前に拡張。

スクリプト:

#!/usr/bin/env python3

import sys
import shutil

orig = sys.argv[1]; n = sys.argv[2]; size = len(str(n)); out = (orig[:orig.rfind(".")], orig[orig.rfind("."):])
for item in [out[0]+"_"+(size-len(str(item)))*"0"+str(item)+out[1] for item in range(1, int(n)+1)]:
    shutil.copyfile(orig, item)

ええ、私は以前にpythonで試しましたが、気の毒になりませんでした...私は通常pythonに行きます:)
Tim

@Tim pythonコードの
美し

1
これにはいくつかの方法があります。
Braiam
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.