我需要从File1,File2,...到File99调用文件。
我尝试了以下不成功的
cat test > {File1 .. File99}
没有单词File的命令不起作用。
答案 0 :(得分:5)
$ for i in {1..100}; do touch "File$i"; done
答案 1 :(得分:5)
只需一个命令:
touch File{1..99}
答案 2 :(得分:4)
这取决于您使用的shell。我假设您正在使用Bash。
根据http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion,Bash会扩展数字和单个字符。所以你的大括号表达应该是:
File{1..99}
但我不认为重定向运算符“>”可以输出到多个文件。您可能需要使用循环:
for output in File{1..99}
do
cat test > $output
done
或者作为一个单行:
for output in File{1..99}; do cat test > $output; done
答案 3 :(得分:4)
如果你喜欢非循环版本,那么你可以使用tee
cat test | tee File{1..99} > /dev/null
答案 4 :(得分:3)
使用 zsh (及其 mult_ios ),您可以:)
% zsh -c 'print test > file{1..3}'
% head file*
==> file1 <==
test
==> file2 <==
test
==> file3 <==
test
答案 5 :(得分:1)
如果您希望文件正确排序(file01,file02 ... file10等),请执行以下操作:
for i in {0..10}; do i="0"$i; touch file${i: -2}; done
与以下内容相同:
for i in {0..10}
do
i="0"$i
touch file${i: -2} # or cat file > file${i: -2}
done
子字符串扩展子句中冒号和短划线之间必须有空格。如果你想以“file01”开头,你可以用1开始上面的范围。
或者,更简洁的方法是拥有前导零:
touch file{0..9}{0..9}
并使用phyrex1an的技巧:
cat test | tee File{0..9}{0..9} > /dev/null
这会使一个额外的文件“file00”。您也可以通过“file39”为“file20”执行“{2..3} {0..9}”,但更改个位数(第二个范围)将导致跳过部分序列。