web-dev-qa-db-ja.com

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

単一のファイル(PDF)があり、file-001file-002などの名前の同じフォルダー(200がニース)に多数の同一のコピーを保持したい.

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

12
Tim

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

< file tee file-{001..200}

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

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

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

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

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

21
Rmano

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

cp file file-001

これで、ファイルにより多くの複製を作成するために、cpxargsと組み合わせることができます。あなたの場合:

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

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

7
Radu Rădeanu

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

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

script file number_ofcopies

先行ゼロの数は自動的に設定され、ファイルにはfile_001.pdffile_002.pdfという名前が付けられ、ファイル番号はbefore拡張子になります。

スクリプト:

#!/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)
4
Jacob Vlijm