Birkaç şeyi karıştırmış gibisin.
set today = 'date +%Y'
tcsh sözdizimine benziyor, ancak tcsh'de bile dizeyi date +%Y
değişkene atar today
, date
komutu çalıştırmaz . Muhtemelen bash veya başka bir POSIX kabuğu kullandığınızdan, bir ödevin sözdizimi ( today=some_value
eş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 if
ve birkaç diğer durumlar hariç ).
set -e
today=$(date +%Y-%m-%d)
mkdir -p The_Logs
find …
Sizin find
komut iyi ama muhtemelen (bunun ne kesin bilmiyorum ama) sen ne yapmak niyetinde yapmaz.
İle bir dizin oluşturuyorsunuz mkdir
ve 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 -mtime
onların değişiklik zamana dayalı dosyaları taşımak ve değil, -atime
bunları 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