Section 31.1: 修改文件扩展名
$ mv filename.{jar,zip}
执行命令如: mv filename.jar filename.zip 。
Section 31.2: 创建按年月分组文件的目录
$ mkdir 20{09..11}-{01..12}
输入 ls 命令将显示创建了以下目录:
2009-01 2009-04 2009-07 2009-10 2010-01 2010-04 2010-07 2010-10 2011-01 2011-04 2011-07 2011-10
2009-02 2009-05 2009-08 2009-11 2010-02 2010-05 2010-08 2010-11 2011-02 2011-05 2011-08 2011-11
2009-03 2009-06 2009-09 2009-12 2010-03 2010-06 2010-09 2010-12 2011-03 2011-06 2011-09 2011-12
在示例中的 9 前面加上 0,就能确保数字填充了一个 0。例如,您也可以在数字中填充多个 0:
$ echo {001..10}
001 002 003 004 005 006 007 008 009 010
Section 31.3: 为点开头的文件创建备份
$ cp .vimrc{,.bak}
执行命令如: cp .vimrc .vimrc.bak.
Section 31.4: 使用增量
$ echo {0..10..2}
0 2 4 6 8 10
第三个参数用于指定增量,即“{start...end...increment}`”。
使用增量并不局限于数字
$ for c in {a..z..5}; do echo -n $c; done
afkpuz
Section 31.5: 使用括号扩展创建列表
Bash 可以通过字母数字字符轻松创建列表。
# list from a to z
$ echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
# reverse from z to a
$ echo {z..a}
z y x w v u t s r q p o n m l k j i h g f e d c b a
# digits
$ echo {1..20}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
# with leading zeros
$ echo {01..20}
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
# reverse digit
$ echo {20..1}
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
# reversed with leading zeros
$ echo {20..01}
20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01
# combining multiple braces
$ echo {a..d}{1..3}
a1 a2 a3 b1 b2 b3 c1 c2 c3 d1 d2 d3
括号扩展是最先进行的扩展,因此不能与其他扩展结合使用。
只能使用字符和数字。
这样是行不通的 echo {$(date +$H)..24}
Section 31.6: 创建多个带子目录的目录
mkdir -p toplevel/sublevel_{01..09}/{child1,child2,child3}
这将创建一个名为 toplevel 的顶级文件夹,以及 toplevel 内名为 sublevel_01, ~ 等的九个文件夹。然后在这些子级文件夹中创建 child1, child2, child3 文件夹,这样就有了
toplevel/sublevel_01/child1
toplevel/sublevel_01/child2
toplevel/sublevel_01/child3
toplevel/sublevel_02/child1
我们可以发现这对创建多个文件夹和子文件夹非常有用,只需使用一条 bash 命令即可实现特定目的。替换变量有助于自动/解析脚本中的信息。