4

我需要正确的语法来使用一个命令复制 file.jpg 100 次,以便获得 100 个名为 file001.jpg、file002.jpg、...、file100.jpg 的文件。我正在使用它,但对我没有任何提示

#!/bin/bash

for x in `seq 1 100`; do

    if [[ x -lt 10 ]]; then cp file.jpg file-00$x.jpg;

    elif [[ x -lt 100 ]]; then cp file.jpg file-0$x.jpg;

    else cp file.jpg file-$x.jpg;

    fi

done
4

2 回答 2

19

使用 bash大括号展开

for n in {001..100}; do
    cp file.jpg file-$n.jpg
done
于 2012-10-06T13:04:25.747 回答
3

在您的两种if情况下,您缺少$on $x,因此您最终比较的是 string x,而不是数字。

不过,正如 Basile Starynkevitch 所指出的,该printf实用程序可能是一种更好的方法:$(printf "file-%03d.jpg" $x)在一行中为您提供正确的格式化字符串。

于 2012-10-06T06:28:22.300 回答