Это не проверено:
# find the *latest* file for each prefix
declare -A mtime name
stat -c "%Y %n" *xml |
while read -r time filename; do
prefix=${filename%_*}
if (( $time > ${mtime[$prefix]:-0} )); then
mtime[$prefix]=$time
name[$prefix]=$filename
fi
done
# put the filenames into an associative array for easy lookup
declare -A keep
for filename in "${name[@]}"; do
keep[$filename]=1
done
# look at teach file to determine its fate
for file in *xml; do
if [[ -v keep[$file] ]]; then
echo "# keep $file"
else
echo "rm $file"
fi
done
Или этот конвейер должен выводить файлы, которые вы хотите сохранить:
paste <( printf "%s\n" *.xml) \
<( printf "%s\n" *.xml | cut -d _ -f 1-4) \
<( stat -c '%Y' *.xml) |
sort -k2,2 -k3,3rn |
awk '!seen[$2]++ {print $1}'
Эту проблему можно решить, заменив видеодрайверы. Удаление драйвера xf86-video-nouveau
и замена его проприетарным драйвером nvidia
иnvidia-utils
(и использование nvidia-settings
для перестановки мониторов )ведет себя так, как ожидалось.
Это прискорбно, так как я бы предпочел использовать бесплатное программное обеспечение, но когда дело доходит до драки, это работает.