हो सकता है कि आप इस तरह से एक स्क्रिप्ट की तलाश में हैं:
#!/bin/bash
shopt -s nullglob # this line is so that it does not compain when no logfiles are found
for filename in test*.log; do # Files considered are the ones startign with test and ending in .log
foldername=$(echo "$filename" | awk '{print (substr($0, 5, 8));}'); # The foldername is characters 5 to 13 from the filename (if they exist)
mkdir -p "$foldername" # -p so that we dont get "folder exists" warning
mv "$filename" "$foldername"
echo "$filename $foldername" ;
done
मैं केवल अपने नमूना के साथ परीक्षण किया, तो एक निर्देशिका है कि महत्वपूर्ण सामग्री में शामिल है में उपयोग करने से पहले एक उचित परीक्षण करना। टिप्पणी के जवाब में
संपादित करें:
इस के लिए अपने मूल स्क्रिप्ट बदलें:
foldername=$(date +%Y%m%d)
mkdir -p /home/app/logs/"$foldername"
sh sample.sh > /home/app/logs/"$foldername"/test$(date +%Y%m%d%H%M%S).log
या यह निर्देशिका कहीं और बनाया जाता है, सिर्फ इस कार्य करें:
sh sample.sh > /home/app/logs/$(date +%Y%m%d)/test$(date +%Y%m%d%H%M%S).log
क्या एक cronjob कि हर रात 00.00 पर निर्देशिका बनाता है के बारे में? और फिर इस निर्देशिका में फ़ाइलों को धक्का देने के लिए वास्तविक cronjob संशोधित करें। – fedorqui
मैं शिकायत किए बिना हर बार गायब निर्देशिका बनाने के लिए 'mkdir -p' की सिफारिश करता हूं यदि यह पहले से मौजूद है। क्या होगा यदि 00:00 नौकरी कुछ कारणों से चलने में विफल रहता है (सिस्टम नीचे जा रहा है), क्या हम चाहते हैं कि सभी दैनिक नौकरियां विफल हो जाएं? –
हां, आप सही हैं। मैं आपका विकल्प पसंद करता हूं। – fedorqui