Mam taki oto skrypt który ma kasować kopie zapasowe, które są starsze niż 60dni ale zostawiać chociaż jedną jeżeli warunek nie jest spełniony.
Skrypt działa dobrze ale w przypadku nazwy kopii ze spacjami nie kasuje ich, rozpatruje każdy człon z osobna czyli:
plik: ala ma kota
ala: Nie ma takiego pliku ani katalogu
ls: nie ma dostępu do ma: Nie ma takiego pliku ani katalogu
ls: nie ma dostępu do kota.odt: Nie ma takiego pliku ani katalogu
Jak to naprawić?
Kod: Zaznacz cały
#!/bin/bash
data=`date +%Y-%m-%d_%H:%M`
raport="ścieżka/skrypt/${data}.raport.log"
for dir in 'ścieżka/folder/1/' 'ścieżka/folder/2/'
do
ls -1Atr $(find "$dir"/* -mtime +60) | while read -r line
do
# tu robisz co chcesz z parametrem "$line"
count=$(ls -1At "${line%/*}" | wc -l)
if [ $count -gt 1 ] ; then
echo $line >> "$raport"
# echo tu jest wiecej niż jeden plik, wiec usuwam
rm -f "$line"
else
echo tu jest 1 lub 0 plików
fi
done
done