如何停止以特定数字创建文件?

我想用3个字母的名字创建900个文件。如何停止以特定数字创建文件?

示例:xyz.txt,其中xy,和z是不同的字母从az

我试图做这样的事情:

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.txtzzz.txt
  • grep -vE '(.).?\1.?\.'筛选期间之前的三个字符不是唯一的任何名称:aaa.txtaab.txtaba.txtbaa.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

回到顶部