如何以固定的結尾多次複製某個檔案?

如何以固定的結尾多次複製某個檔案?

我有一個文件(PDF),我想在同一個資料夾中有很多相同的副本(200 個就很好)file-001,名為file-002等。

我該怎麼做?

答案1

你可以做類似的事情

< file tee file-{001..200}

然而,如果媒體變得不可讀,那麼上面有多少副本就不再重要了——從根本上說,備份需要多樣性

請注意,tee將其標準輸入寫入標準輸出以及每個給定的文件 - 對於大文件,或者包含二進位資料或其他可能幹擾終端設定的特殊字元的文件,您可能希望將標準輸出轉儲到位桶

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

答案2

這是 shell 技巧大有幫助的經典案例。

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

現在,要對文件進行更多重複,您可以cpxargs.在你的情況下:

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

將複製filefile-001, file-002,... , file-200。請參閱man xargs以獲取更多資訊。

答案4

一如既往,蟒蛇卡車遲到了,但:

使其可執行,將其拖曳到終端機視窗上,將檔案拖曳到終端視窗上進行複製並設定副本數:

script file number_ofcopies

自動設定前導零的數量,檔案被命名為file_001.pdf, file_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)

相關內容