如何停止以特定数字创建文件?
我想用3个字母的名字创建900个文件。如何停止以特定数字创建文件?
示例:xyz.txt
,其中x
,y
,和z
是不同的字母从a
到z
。
我试图做这样的事情:
for ((i=1; i < 900; i++)) do touch {a..z}{a..z}{a..z}$i.txt
done
我希望它停止在900
但最后我创建的文件超过10K。有人可以帮我完成这个吗?
回答:
为了避免与前一段重复的字符,如在评论中提到任何人的名字,你可以这样做:
printf '%s.txt\n' {a..z}{a..z}{a..z} | grep -vE '(.).?\1.?\.' \ | head -n 900 | xargs touch
- 的
printf
语句打印从aaa.txt
列表,aab.txt
到zzz.txt
。 grep -vE '(.).?\1.?\.'
筛选期间之前的三个字符不是唯一的任何名称:aaa.txt
,aab.txt
,aba.txt
和baa.txt
都被过滤。head -n 900
从列表touch
的几次获得的第900名xargs touch
调用尽可能但将确保在命令行中从未太长。
如果你想随机的文件名(但仍坚持这些标准),则可以选择900之前洗牌他们:
printf '%s.txt\n' {a..z}{a..z}{a..z} | grep -vE '(.).?\1.?\.' \ | shuf | head -n 900 | xargs touch
回答:
你可以用2线做到这一点:
all=({a..z}{a..z}{a..z}.txt) touch "${all[@]:0:900}"
(假设你的操作系统允许与900个参数的命令行)。如果除了前900个这样的文件以外,你需要做更复杂的事情。
回答:
的文件名提醒split
默认输出命名。所以你可以将一个空文件分割成900个文件。
split /dev/null -n900 -a3 --additional-suffix=".txt" ""
回答:
下产生910名,并将它们传递给touch
之前丢弃过去的10。
printf '%s.txt\n' {a..m}{p..v}{0..9} | head -n 900 | xargs touch
你也许能够找到产生正是900的替代品,所以你可以只touch <pattern>
和有壳扩大到所需数量的唯一名称的组合。
以上是 如何停止以特定数字创建文件? 的全部内容, 来源链接: utcz.com/qa/257759.html