GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Doppelte Datei x Mal in der Befehlsshell?

Ich versuche, eine Videodatei x-mal von der Befehlszeile aus zu duplizieren, indem ich eine for-Schleife verwende, ich habe es so versucht, aber es funktioniert nicht:

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

Akzeptierte Antwort:

Ihr Shell-Code hat zwei Probleme:

  1. Das echo sollte nicht da sein.
  2. Die Variable $i ist fälschlicherweise als $1 eingegeben im Zieldateinamen.

Um eine Kopie einer Datei im selben Verzeichnis wie die Datei selbst zu erstellen, verwenden Sie

cp thefile thecopy

Wenn Sie dort etwas anderes einfügen, z. B.

cp thefile theotherthing thecopy

dann wird davon ausgegangen, dass Sie thefile kopieren möchten und theotherthing in das Verzeichnis genannt thecopy .

In Ihrem Fall sucht es speziell nach einer Datei namens test.ogg und eine namens echo in das Verzeichnis test$1.ogg zu kopieren .

Der $1 wird höchstwahrscheinlich zu einer leeren Zeichenfolge erweitert. Deshalb, wenn Sie das echo löschen aus dem Befehl erhalten Sie „test.ogg und test.ogg sind die gleichen Dateien“; der ausgeführte Befehl ist im Wesentlichen

cp test.ogg test.ogg

Dies ist wahrscheinlich ein Tippfehler.

Am Ende möchten Sie so etwas:

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

Oder alternativ

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

Oder mit tee :

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

Hinweis:Dies würde höchstwahrscheinlich für 100 Kopien funktionieren, aber für Tausende von Kopien kann es einen „Argumentliste zu lang“-Fehler erzeugen. Verwenden Sie in diesem Fall wieder eine Schleife.


Linux
  1. Linux-wc-Befehl

  2. Linux grep-Befehl

  3. Linux-Befehl, um eine Datei n-mal mit sich selbst zu verketten

  4. Wozu dient Linux test -a command test?

  5. Shell-Befehl zum Überwachen von Änderungen in einer Datei

Gunzip-Befehl unter Linux

Stat-Befehl unter Linux

Quellbefehl unter Linux

So leiten Sie die Shell-Befehlsausgabe um

Kommando-Shell

Was ist eine .sh-Datei?