seq与批量建文件或文件夹
1、简单需求
新建test1--test5五个文件夹 mkdir test{1..5}
2、拓展
以上是最简单的写法,不过当有格式要求时,上面的方法就不妥了。比如,想要建test001--test010 ,即,后面的数字保持三位的精度时,再用这样的通配就不灵了。这时候可以使用seq 、printf或awk 。具体如下
1seq -f 'test%03g' 1 10 | xargs mkdir
2或
3mkdir $(seq -f 'test%03g' 1 10)
-f 参数是用来格式化输出 。注意,百分号后面的 0 一定不能取消,后面的 3 代表精度位 。另外,seq还有一个参数-s ,就来指定输出的分隔符,默认是n --即换行 。例如:需要在一行中用空格输入1到10就可以写为:seq -s ' ' 1 10
。同理使用printf和awk 的方法为:
1printf 'test%03dn' {1..10} | xargs mkdir 或 mkdir `printf 'test%03d ' {1..10}`
2awk 'BEGIN { while (num < 10 ) printf "test%03dn", ++num ; exit}' | xargs mkdir
3、反思
最初想到新建几个文件时,尝试的第一个用法是 mkdir test[0-9] ,显然我把通配符和正则的概念搞混了。关于两者之间的区别可以总结为一句话:
通配符(出现在argument位置)由shell负责解释(与现有的文件名匹配),与具体的命令(ls,rm,mkdir)无关.正则表达式(出现在option位置上)由具体的应用程序解释(grep,sed,awk),与shell无关。
本文提到的较多的就是seq的用法,seq也经常和for语句套用,具体如下:
1for i in `seq -f '%02g' 1 20`; do XXX ;done
同样,明白了原理,上面的方法不仅仅可以同 mkdir和touch使用,也可以同rm 、del等命令配合使用。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/seq-batch-files/2682.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.