GNU/Linux >> Linux Esercitazione >  >> Linux

Aggiunta di timestamp a un nome file con mv in BASH

Le poche righe che hai pubblicato dalla tua sceneggiatura mi sembrano a posto. Probabilmente è qualcosa di un po' più profondo.

Devi trovare quale linea ti sta dando questo errore. Aggiungi set -xv all'inizio del tuo script. Questo stamperà il numero di riga e il comando eseguito su STDERR . Questo ti aiuterà a identificare dove nel tuo script stai ricevendo questo particolare errore.

A proposito, hai uno shebang all'inizio della tua sceneggiatura? Quando vedo qualcosa del genere, normalmente mi aspetto che sia un problema con Shebang. Ad esempio, se avessi #! /bin/bash in alto, ma il tuo interprete bash si trova in /usr/bin/bash , vedrai questo errore.

MODIFICA

Nuova domanda:come posso salvare il file correttamente in primo luogo, per evitare di dover eseguire questa correzione ogni volta che invio nuovamente il file?

Due modi:

  1. Seleziona Modifica->Conversione EOL->Formato Unix voce di menu quando si modifica un file. Una volta che ha le terminazioni di riga corrette, Notepad++ le manterrà.
  2. Per assicurarti che tutti i nuovi file abbiano le terminazioni di riga corrette, vai a Impostazioni->Preferenze voce di menu e apri le Preferenze la finestra di dialogo. Seleziona Nuovo documento/directory predefinita scheda. In Nuovo documento e Formato , seleziona Unix pulsante radio. Fai clic su Chiudi pulsante.

Uso questo comando per ruotare semplicemente un file:

mv output.log `date +%F`-output.log

Nella cartella locale ho 2019-09-25-output.log


mv server.log logs/$(date -d "today" +"%Y%m%d%H%M").log

Un metodo a riga singola all'interno di bash funziona così.

[alcuni out put]>$(date "+%Y.%m.%d-%H.%M.%S").ver

creerà un file con un nome timestamp con estensione ver. Un file di lavoro che elenca un'istantanea di un nome di file con data e ora come segue può mostrare che funziona.

find . -type f -exec ls -la {} \; | cut -d ' ' -f 6- >$(date "+%Y.%m.%d-%H.%M.%S").ver

Certo

cat somefile.log > $(date "+%Y.%m.%d-%H.%M.%S").ver

o ancora più semplice

ls > $(date "+%Y.%m.%d-%H.%M.%S").ver


Linux
  1. Il Bash '?

  2. Bash -c con parametri posizionali?

  3. Rinomina di massa del file Bash con contatore?

  4. Avviso con nftw

  5. Ottieni l'ultimo dirname/nomefile in un argomento di percorso file in Bash

Bash:Scrivi su file

Comando sorgente Bash

Bash:aggiungi al file

35 Esempi di script Bash

Reindirizzamento Bash spiegato con esempi

echo testo con nuova riga in bash