2

File1、File2、...からFile99に呼び出されるファイルを作成する必要があります。

以下を試しましたが失敗しました

cat test > {File1 .. File99}

ファイルという単語のないコマンドは機能しませんでした。

4

6 に答える 6

5

たった1つのコマンド:

touch File{1..99}
于 2009-03-11T22:48:47.813 に答える
5
$ for i in {1..100}; do touch "File$i"; done 
于 2009-03-11T18:41:00.077 に答える
4

これは、使用しているシェルによって異なります。Bashを使用していると思います。

http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansionによると、Bash は数字と 1 文字を展開します。したがって、ブレース式は次のようになります。

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
于 2009-03-11T18:40:07.320 に答える
4

ループしないバージョンを好む場合は、tee を使用できます

cat test | tee File{1..99} > /dev/null
于 2009-03-11T19:10:28.917 に答える
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

これにより、1 つの余分なファイル「file00」が作成されます。「file20」から「file39」に対して「{2..3}{0..9}」を実行することもできますが、1 の桁 (2 番目の範囲) を変更すると、シーケンスの一部がスキップされます。

于 2009-04-20T21:54:31.010 に答える