Вы, кажется, перепутали несколько вещей.
set today = 'date +%Y'выглядит как синтаксис tcsh, но даже в tcsh он присваивает строку date +%Yпеременной today, он не запускает dateкоманду. Поскольку вы, вероятно, используете bash или какую-либо другую оболочку POSIX, синтаксис присваивания today=some_value(без пробелов вокруг знака равенства). Чтобы запустить команду и назначить ее вывод переменной, используйте подстановку команды :
today=$(date +%Y-%m-%d)
(Я также завершил спецификацию даты). Вы можете использовать обратные кавычки вместо долларовых скобок, но это может привести к тому, что они будут визуально перепутаны с прямыми кавычками, а правила, когда вам нужны кавычки внутри команды с обратными кавычками, довольно сложны и зависят от реализации, поэтому лучше не придерживаться $(…)(что имеет тот же эффект с более разумным синтаксисом).
Вы использовали &в конце несколько команд. Это заставляет команду выполняться в фоновом режиме, что здесь не нужно. Я подозреваю, что вы имели в виду &&, что означает выполнение следующей команды, только если первая команда прошла успешно.
today=$(date +%Y-%m-%d)
mkdir -p The_Logs &&
find …
Альтернативой использованию &&после каждой команды является запуск вашего скрипта set -e. Это говорит оболочке прекратить выполнение скрипта, как только любая команда вернет ненулевой статус (за исключением команд в ifусловиях и нескольких других случаях).
set -e
today=$(date +%Y-%m-%d)
mkdir -p The_Logs
find …
Ваша findкоманда в порядке, но, вероятно, не делает то, что вы собираетесь делать (хотя я не знаю точно, что это такое).
Вы создаете каталог с помощью, mkdirа затем сразу же просматриваете его find. Это не будет полезно, если каталог уже существует. Вы имели в виду создать каталог для сегодняшних журналов и переместить последние файлы из The_Logsкаталога под названием, например The_Logs.2012-02-11?
mkdir -p "The_Logs.$today"
find The_Logs -mtime -1 -exec mv {} "The_Logs.$today" \;
Или вы хотели переименовать сегодняшние файлы журналов, чтобы добавить суффикс $today? Это требует вычисления разных имен файлов для каждого файла для перемещения.
find The_Logs -mtime -1 -exec sh -c 'mv "$0" "$0.$today"' {} \;
Обратите внимание, что я использовал -mtimeдля перемещения файлов в зависимости от времени их изменения, а не -atimeот времени последнего чтения файла (если ваша система отслеживает это, а если нет, то время может быть уже как время изменения).
:потому что тогда она будет считываться как хост в rsync и scp. stackoverflow.com/a/37143274/390066