GNU/Linux >> Linux の 問題 >  >> Linux

コマンドシェルでファイルをX回複製しますか?

forループを使用してコマンドラインからビデオファイルをx回複製しようとしました。このように試しましたが、機能しません:

for i in {1..100}; do cp test.ogg echo "test$1.ogg"; done

承認された回答:

シェルコードには2つの問題があります:

  1. エコー そこにあるべきではありません。
  2. 変数$i $ 1と誤って入力されています 宛先ファイル名で。

ファイル自体と同じディレクトリにファイルのコピーを作成するには、

を使用します。
cp thefile thecopy

そこに何か他のものを挿入した場合、例:

cp thefile theotherthing thecopy

次に、ファイルをコピーすると想定されます。 およびtheotherthing ディレクトリ thecopyと呼ばれます 。

あなたの場合、それは特に test.oggと呼ばれるファイルを探します echoという名前の1つ ディレクトリtest$ 1.oggにコピーします 。

$ 1 ほとんどの場合、空の文字列に展開されます。これが、 echoを削除するときに コマンドから、「test.oggとtest.oggは同じファイルです」を取得します。実行されているコマンドは基本的に

cp test.ogg test.ogg

これはおそらくタイプミスです。

結局、あなたはこのようなものが欲しいです:

for i in {1..100}; do cp test.ogg "test$i.ogg"; done

または、代替手段として

i=0
while (( i++ < 100 )); do
  cp test.ogg "test$i.ogg"
done

または、 teeを使用します :

tee test{1..100}.ogg <test.ogg >/dev/null

注:これは100コピーで機能する可能性が高いですが、数千コピーの場合、「引数リストが長すぎます」というエラーが生成される可能性があります。その場合は、ループの使用に戻ります。


Linux
  1. Linuxwcコマンド

  2. ファイルをそれ自体にn回連結するLinuxコマンド

  3. ファイルの変更を監視するシェル コマンド

  1. Linuxgrepコマンド

  2. Linux test -a コマンド テストとは何ですか?

  3. bashシェルを使用してコマンドを複数回実行する方法は?

  1. Linuxテールコマンド

  2. Linuxタッチコマンド

  3. LinuxでのCatコマンド