GNU/Linux >> Linux Esercitazione >  >> Linux

File duplicato X volte nella shell dei comandi?

Provo a duplicare un file video x volte dalla riga di comando usando un ciclo for, l'ho provato in questo modo, ma non funziona:

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

Risposta accettata:

Il tuo codice shell ha due problemi:

  1. L'echo non dovrebbe essere lì.
  2. La variabile $i è stato digitato erroneamente come $1 nel nome del file di destinazione.

Per fare una copia di un file nella stessa directory del file stesso, usa

cp thefile thecopy

Se inserisci qualcos'altro, ad es.

cp thefile theotherthing thecopy

quindi si presume che desideri copiare thefile e theotherthing nella directory chiamato thecopy .

Nel tuo caso, cerca specificamente un file chiamato test.ogg e uno chiamato echo per copiare nella directory test$1.ogg .

Il $1 molto probabilmente si espanderà in una stringa vuota. Ecco perché, quando elimini echo dal comando si ottiene “test.ogg e test.ogg sono gli stessi file”; il comando in esecuzione è essenzialmente

cp test.ogg test.ogg

Probabilmente è un errore di battitura.

Alla fine, vuoi qualcosa del genere:

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

Oppure, in alternativa

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

Oppure, utilizzando tee :

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

Nota:molto probabilmente funzionerebbe per 100 copie, ma per migliaia di copie potrebbe generare un errore "elenco di argomenti troppo lungo". In tal caso, torna a utilizzare un ciclo.


Linux
  1. Comando wc Linux

  2. comando Linux grep

  3. Comando Linux per concatenare un file a se stesso n volte

  4. A cosa serve il test di Linux:un test di comando?

  5. Come eseguire un comando più volte, usando bash shell?

Comando Gunzip in Linux

Comando Stat in Linux

Comando sorgente in Linux

Come reindirizzare l'output del comando della shell

Shell dei comandi

Cos'è un file .sh?