Birkaç şeyi karıştırmış gibisin.
set today = 'date +%Y'tcsh sözdizimine benziyor, ancak tcsh'de bile dizeyi date +%Ydeğişkene atar today, datekomutu çalıştırmaz . Muhtemelen bash veya başka bir POSIX kabuğu kullandığınızdan, bir ödevin sözdizimi ( today=some_valueeşittir işareti etrafında boşluk olmadan) olur. Komutu çalıştırmak ve çıktısını değişkene atamak için komut değiştirme işlevini kullanın :
today=$(date +%Y-%m-%d)
(Ayrıca tarih belirtimini de tamamladım). Dolar-parantez yerine ters alıntılar kullanabilirsiniz, ancak ileriye dönük alıntılar ile görsel olarak karıştırılmaya eğilimlidir ve ters çevrilmiş komut içinde alıntı yapmanız gerektiğindeki kurallar oldukça karmaşık ve uygulamaya bağımlıdır, bu nedenle buna uymamak daha iyidir $(…)(ki bu daha sağlıklı bir sözdizimi ile aynı etkiye sahiptir).
Birkaç &komutun sonunda kullandın . Bu komutun burada istenmeyen arka planda çalışmasını sağlar. Kastettiğinden şüpheliyim &&, bu yalnızca bir sonraki komut başarılı olursa bir sonraki komutu yürütmek anlamına gelir.
today=$(date +%Y-%m-%d)
mkdir -p The_Logs &&
find …
&&Her komuttan sonra kullanmaya alternatif bir komut dosyası ile başlamaktır set -e. Bu, kabuğa herhangi bir komut sıfır olmayan bir durum döndürdüğünde komut dosyasını çalıştırmayı durdurmasını söyler (koşullar altındaki komutlar ifve birkaç diğer durumlar hariç ).
set -e
today=$(date +%Y-%m-%d)
mkdir -p The_Logs
find …
Sizin findkomut iyi ama muhtemelen (bunun ne kesin bilmiyorum ama) sen ne yapmak niyetinde yapmaz.
İle bir dizin oluşturuyorsunuz mkdirve sonra hemen onu geziyorsunuz find. Dizin zaten mevcut değilse, bu işe yaramaz. Bugünün günlükleri için bir dizin oluşturmak ve en son dosyaları The_Logsörneğin bir dizine taşımak mı istediniz The_Logs.2012-02-11?
mkdir -p "The_Logs.$today"
find The_Logs -mtime -1 -exec mv {} "The_Logs.$today" \;
Yoksa soneki eklemek için bugünün günlük dosyalarını yeniden adlandırmak mı istediniz $today? Bu, taşınacak her bir dosya için farklı dosya adını hesaplamayı gerektirir.
find The_Logs -mtime -1 -exec sh -c 'mv "$0" "$0.$today"' {} \;
Kullandığım unutmayın -mtimeonların değişiklik zamana dayalı dosyaları taşımak ve değil, -atimebunları yapmazsa, atime kadar geriye olabilir - sistem o izler ise (dosya son okunduğundan zaman olan mtime).
:çünkü o zaman rsync ve scp'de bir host olarak okunacaktır. stackoverflow.com/a/37143274/390066