特定のファイルを通常の終了で複数回コピーするにはどうすればよいですか?

特定のファイルを通常の終了で複数回コピーするにはどうすればよいですか?

1 つのファイル (PDF) があり、同じフォルダー内になどの名前の同一のコピーを多数 (200 個程度が理想) 保存したいと考えていますfile-001file-002

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

答え1

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

< file tee file-{001..200}

しかし、メディアが読み取り不能になった場合、そこにコピーがいくつあっても意味がありません。基本的にバックアップには多様性

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

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

答え2

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

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

答え3

ファイルの単一の複製を作成するには、次の方法を使用できることはおそらくご存知でしょうcp

cp file file-001

ここで、ファイルにさらに複製を作成するには、cpと組み合わせることができますxargs。あなたの場合:

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

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

答え4

いつものように、パイソン トラックは遅れて到着しますが、

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

script file number_ofcopies

先頭のゼロの数は自動的に設定され、ファイル名はfile_001.pdffile_002.pdfファイル番号が配置された、、となります。前に拡張子。

スクリプト:

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

関連情報