Wygląda na to, że pomieszałeś kilka rzeczy.
set today = 'date +%Y'wygląda na składnię tcsh, ale nawet w tcsh przypisuje ciąg date +%Ydo zmiennej today, nie uruchamia datepolecenia. Ponieważ prawdopodobnie używasz bash lub innej powłoki POSIX, składnia przypisania jest następująca today=some_value(bez spacji wokół znaku równości). Aby uruchomić polecenie i przypisać dane wyjściowe do zmiennej, użyj podstawienia polecenia :
today=$(date +%Y-%m-%d)
(Skończyłem także specyfikację daty). Możesz używać cudzysłowów zamiast nawiasów dolarowych, ale jest podatny na mylące wizualnie z cudzysłowami do przodu, a zasady, kiedy potrzebujesz cudzysłowów wewnątrz polecenia z cudzysłowem, są dość złożone i zależą od implementacji, więc lepiej nie trzymać się $(…)( ma taki sam efekt ze składnią sanera).
Użyłeś &na końcu kilku poleceń. To powoduje, że polecenie wykonuje się w tle, co nie jest tutaj potrzebne. Podejrzewam, że miałeś na myśli &&, co oznacza wykonanie następnego polecenia tylko wtedy, gdy pierwsze polecenie się powiedzie.
today=$(date +%Y-%m-%d)
mkdir -p The_Logs &&
find …
Alternatywą do używania &&po każdym poleceniu jest uruchomienie skryptu set -e. To mówi powłoce, aby przestała wykonywać skrypt, gdy tylko dowolne polecenie zwróci niezerowy status (z wyjątkiem poleceń w ifwarunkach i kilku innych przypadkach).
set -e
today=$(date +%Y-%m-%d)
mkdir -p The_Logs
find …
Twoje findpolecenie jest w porządku, ale prawdopodobnie nie robi tego, co zamierzasz (chociaż nie wiem na pewno, co to jest).
Tworzysz katalog za pomocą, mkdira następnie od razu go przeglądasz find. To nie będzie przydatne, dopóki katalog już nie istnieje. Czy chodziło Ci o utworzenie katalogu dla dzisiejszych dzienników i przeniesienie ostatnich plików The_Logsdo katalogu o nazwie np. The_Logs.2012-02-11?
mkdir -p "The_Logs.$today"
find The_Logs -mtime -1 -exec mv {} "The_Logs.$today" \;
A może chciałeś zmienić nazwę dzisiejszych plików dziennika, aby dodać przyrostek $today? Wymaga to obliczenia innej nazwy pliku dla każdego pliku do przeniesienia.
find The_Logs -mtime -1 -exec sh -c 'mv "$0" "$0.$today"' {} \;
Zauważ, że użyłem -mtime, aby przenieść pliki na podstawie ich czasu modyfikacji, a nie -atime, czyli czasu ostatniego odczytu pliku (jeśli twój system to śledzi - jeśli nie, atime może być tak daleko jak mtime).
:ponieważ wtedy będzie ona czytana jako host w rsync i scp. stackoverflow.com/a/37143274/390066