Shell
在命令 shell 中重複文件 x 次
我嘗試使用 for 循環從命令行複制影片文件 x 次,我已經嘗試過這樣,但它不起作用:
for i in {1..100}; do cp test.ogg echo "test$1.ogg"; done
您的 shell 程式碼有兩個問題:
echo
不應該在那裡。- 變數
$i
(“dollar i”$1
) 在目標文件名中被錯誤輸入為 (“dollar one”)。要在與文件本身相同的目錄中復製文件,請使用
cp thefile thecopy
如果您使用兩個以上的參數,例如
cp thefile theotherthing thecopy
然後假設您想複製
thefile
並theotherthing
進入名為thecopy
.在您的情況下
cp test.ogg echo "test$1.ogg"
,它專門尋找一個名為test.ogg
和一個名為echo
複製到目錄的文件test$1.ogg
。很可能會
$1
擴展為空字元串。這就是為什麼當你echo
從命令中刪除時,你會得到“test.ogg 和 test.ogg 是同一個文件”;正在執行的命令本質上是cp test.ogg test.ogg
這可能是一個錯誤的輸入。
最後,你想要這樣的東西:
for i in {1..100}; do cp test.ogg "test$i.ogg"; done
或者,作為替代
i=0 while (( i++ < 100 )); do cp test.ogg "test$i.ogg" done
或者,使用
tee
:tee test{1..100}.ogg <test.ogg >/dev/null
注意:這很可能適用於 100 個副本,但對於數千個副本,它可能會生成“參數列表太長”錯誤。在這種情況下,請恢復使用循環。