Это должно работать:
DIRS="a/ b/"
MAXDELBYTES="53687091200" # 50GB
DELBYTES="0"
find $DIRS -type f -printf "%T@ %s %p\n" | sort -r -n | while read time bytes filename
do
rm -fv "$filename"
DELBYTES=$((DELBYTES + bytes))
if [ $DELBYTES -ge $MAXDELBYTES ]; then break; fi
done
Это имеет немного больше смысла, если учесть, что синтаксис использовался в DOS и старых системах Windows до Windows 95, для чего требовалось [1122604]8.3 имени файла[1122605]. Эти имена файлов могли иметь только одну точку и максимум три символа после точки. Большинство, если не все файлы в системе будут иметь трехсимвольное расширение (даже если технически расширение короче или вообще не разрешено), так что, я думаю, имеет смысл использовать [1122606]*.*[1122607] для соответствия любому файлу (по крайней мере, с искаженной логикой Windowsey).
Интерпретация [1122608]*.*[1122609] в оболочках Unix
В оболочках Unix, как другие отмечали, это представляет собой 'расширение патнамента' или 'глобус'. В [1122610]*[1122611] нет никакого странного прыжка в конец и, таким образом, это не приводит к игнорированию следующих за ним символов. Шаблон [1122612]*.*[1122613] будет соответствовать любому имени файла, содержащему точку (за исключением начальной точки). Это определенно не будет соответствовать ни одному файлу, так как в системе Unix/Linux много файлов, которые [1122614]не имеют расширения (или иным образом не содержат точку, так как это тоже разрешено).
Звездочка ( [1123019] '*'[1123020]) должна совпадать с любой строкой, включая нулевую.
При использовании [1122485]*.*[1122486] он совпадает со всем, что:
не начинается с [1123021].
содержит, по крайней мере, одно [1123023].
Вы также можете обратиться к [1122491]Расширению имени файла [1122492] в руководстве.[1122032].
В этом случае [1122513]*.*[1122514] совпадают с любыми файлами, содержащими точку [1122515].[1122516] в его имени.
Подробнее [1122517]здесь [1122518].[1122044].
hdparm -i /dev/sda