Ви ніби змішали кілька речей.
set today = 'date +%Y'виглядає як синтаксис tcsh, але навіть у tcsh він призначає рядок date +%Yзмінній today, вона не виконує dateкоманду. Оскільки ви, ймовірно, використовуєте bash або іншу оболонку POSIX, синтаксис призначення є today=some_value(без пробілів навколо знака рівності). Щоб запустити команду та призначити її вихід змінній, використовуйте підстановку команди :
today=$(date +%Y-%m-%d)
(Я також завершив специфікацію дати). Ви можете використовувати зворотні котирування замість дужок долара, але це схильне до того, щоб візуально плутати з котируваннями вперед, а правила, коли вам потрібні лапки всередині команди, що коментується, досить складні і залежать від реалізації, тому краще не дотримуватися $(…)(які має той самий ефект із синтаксисом saner).
Ви використовували &в кінці кілька команд. Це змушує команду виконуватись у фоновому режимі, чого тут не потрібно. Я підозрюю, що ви мали на увазі &&, що означає виконати наступну команду, лише якщо перша команда вдалася.
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в цей час, коли файл останній раз читався (якщо ваша система це відслідковує - якщо цього не відбувається, atime може бути назад, як mtime).
:оскільки тоді вона буде прочитана як хост у rsync та scp. stackoverflow.com/a/37143274/390066