Você parece ter misturado várias coisas.
set today = 'date +%Y'
parece com a sintaxe do tcsh, mas mesmo no tcsh atribui a string date +%Y
à variável today
, ele não executa o date
comando. Como você provavelmente está usando o bash ou algum outro shell POSIX, a sintaxe de uma atribuição é today=some_value
(sem espaços ao redor do sinal de igual). Para executar o comando e atribuir sua saída à variável, use a substituição de comando :
today=$(date +%Y-%m-%d)
(Também completei a especificação da data). Você pode usar aspas duplas em vez de parênteses em dólar, mas é propenso a ser visualmente confundido com aspas diretas, e as regras para quando você precisar de aspas dentro de um comando aspas são bastante complexas e dependentes da implementação, por isso é melhor não seguir $(…)
( tem o mesmo efeito com uma sintaxe mais saudável).
Você usou &
no final de vários comandos. Isso faz com que o comando seja executado em segundo plano, o que não é desejado aqui. Eu suspeito que você quis dizer &&
, o que significa executar o próximo comando apenas se o primeiro comando tiver êxito.
today=$(date +%Y-%m-%d)
mkdir -p The_Logs &&
find …
Uma alternativa ao uso &&
após cada comando é iniciar seu script set -e
. Isso indica ao shell para parar de executar o script assim que qualquer comando retornar um status diferente de zero (exceto para comandos em if
condições e em alguns outros casos).
set -e
today=$(date +%Y-%m-%d)
mkdir -p The_Logs
find …
Seu find
comando é bom, mas provavelmente não faz o que você pretende fazer (embora eu não saiba ao certo o que é isso).
Você está criando um diretório mkdir
e, em seguida, atravessando-o imediatamente find
. Isso não será útil a menos que o diretório já exista. Você queria criar um diretório para os logs de hoje e mover arquivos recentes de The_Logs
para um diretório chamado, por exemplo The_Logs.2012-02-11
?
mkdir -p "The_Logs.$today"
find The_Logs -mtime -1 -exec mv {} "The_Logs.$today" \;
Ou você quis renomear os arquivos de log de hoje para adicionar o sufixo $today
? Isso requer o cálculo do nome do arquivo diferente para cada arquivo a ser movido.
find The_Logs -mtime -1 -exec sh -c 'mv "$0" "$0.$today"' {} \;
Observe que eu usei -mtime
para mover arquivos com base no tempo de modificação, e não -atime
, que é a hora em que o arquivo foi lido pela última vez (se o seu sistema acompanhar isso - se não o fizer, o atime pode estar no mesmo nível do arquivo). mtime).
:
-la, pois ela será lida como um host no rsync e scp. stackoverflow.com/a/37143274/390066