Sembra che tu abbia confuso diverse cose.
set today = 'date +%Y'assomiglia alla sintassi di tcsh, ma anche in tcsh assegna la stringa date +%Yalla variabile today, non esegue il datecomando. Dato che probabilmente stai usando bash o qualche altra shell POSIX, la sintassi di un compito è today=some_value(senza spazi attorno al segno uguale). Per eseguire il comando e assegnare il suo output alla variabile, utilizzare la sostituzione del comando :
today=$(date +%Y-%m-%d)
(Ho anche completato la specifica della data). Puoi usare i backquotes invece delle parentesi in dollari, ma è incline a essere visivamente confuso con le virgolette, e le regole per quando hai bisogno di virgolette all'interno di un comando backquoted sono piuttosto complesse e dipendenti dall'implementazione, quindi è meglio non attenersi a $(…)(che ha lo stesso effetto con una sintassi più sana).
Hai usato &alla fine di diversi comandi. Ciò rende il comando eseguito in background, che non è desiderato qui. Sospetto che intendessi &&, il che significa eseguire il comando successivo solo se il primo comando ha avuto successo.
today=$(date +%Y-%m-%d)
mkdir -p The_Logs &&
find …
Un'alternativa all'utilizzo &&dopo ogni comando è di avviare lo script con set -e. Questo dice alla shell di interrompere l'esecuzione dello script non appena un comando restituisce uno stato diverso da zero (ad eccezione dei comandi nelle ifcondizioni e in alcuni altri casi).
set -e
today=$(date +%Y-%m-%d)
mkdir -p The_Logs
find …
Il tuo findcomando va bene, ma probabilmente non fa quello che intendi fare (anche se non so per certo di cosa si tratti).
Stai creando una directory con mkdire poi la attraversi immediatamente con find. Ciò non sarà utile se la directory non esiste già. Intendevi creare una directory per i registri di oggi e spostare i file recenti da The_Logsuna directory chiamata ad esempio The_Logs.2012-02-11?
mkdir -p "The_Logs.$today"
find The_Logs -mtime -1 -exec mv {} "The_Logs.$today" \;
O intendevi rinominare i file di registro di oggi per aggiungere il suffisso $today? Ciò richiede il calcolo del nome file diverso per ogni file da spostare.
find The_Logs -mtime -1 -exec sh -c 'mv "$0" "$0.$today"' {} \;
Nota che ho usato -mtime, per spostare i file in base al loro tempo di modifica, e non -atime, che è l'ora dell'ultima lettura del file (se il tuo sistema ne tiene traccia - in caso contrario, l'atime potrebbe risalire al mtime).
:perché allora verrà letto come host in rsync e scp. stackoverflow.com/a/37143274/390066