für einen Skript suchen Sie so vielleicht:
#!/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
ich mit Ihrer Probe nur getestet, so eine richtige Prüfung, bevor in einem Verzeichnis verwenden, die wichtigen Sachen enthält.
bearbeiten in Reaktion auf die Kommentare:
ändern Original-Skript dazu:
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
Oder es wird das Verzeichnis woanders geschaffen, nur dies tun:
sh sample.sh > /home/app/logs/$(date +%Y%m%d)/test$(date +%Y%m%d%H%M%S).log
Was ist mit einem cronjob, der das Verzeichnis um 00.00 jeden Abend schafft? Ändern Sie dann den tatsächlichen Cronjob, um Dateien in dieses Verzeichnis zu verschieben. – fedorqui
Ich würde 'mkdir -p' empfehlen, um jedes Mal ein fehlendes Verzeichnis zu erstellen, ohne es zu beschweren, wenn es bereits existiert. Was passiert, wenn der Job 00:00 aus irgendeinem Grund nicht ausgeführt werden kann (System ist ausgefallen)? Wollen wir deshalb alle täglichen Jobs abbrechen? –
Ja, Sie haben Recht. Ich bevorzuge deine Wahl. – fedorqui