Удалить все, кроме последней версии - без метки времени

Найдите в вашем SSH-клиенте параметр «повторно подключиться при отключении». Если вы используете клиент командной строки, проверьте, не работает ли он что-то вроде function ssh () {while true; ssh "$ @"; Выполнено; }

3
05.06.2018, 13:13
2 ответа

Herramientas de software uno -trazador de líneas, utilizando ls -vy sort -Vque ordenan por número de versión:

{ ls -Qrv *.py |rev | uniq -f 1 | rev; ls -Q *.py; } | sort -V | uniq -u | xargs rm

El uso de uniq -f 1depende de que el formato de nombre del archivo sea consistente --se necesitan los revcircundantes porque -fno tiene otra forma de ignorar el último campo.

1
27.01.2020, 21:25

Conzsh:

# all *.<number>.py files in "n"umerical order
files=(*-<->.py(n))

# associative array whose key is the part before the last "-"
typeset -A latest
for f ($files) latest[${f%-*}]=$f

# plain array with the values of the associative array
keep=($latest)

# array subtraction:
echo rm -- ${files:|keep}

(quitar echosi feliz ).

Eso no hace ninguna suposición sobre qué caracteres pueden contener el resto de los nombres de archivo. Conbash(o zshoksh)y herramientas GNU:

xargs -r0a <(printf '%s\0' *-*.py |
  grep -zEe '-[[:digit:]]+\.py$' |
  sort -zrV |
  awk -vRS='\0' -vORS='\0' '
    {key = $0; sub(/-[^-]*$/, "", key)}
    seen[key]++') echo rm --
1
27.01.2020, 21:25

Теги

Похожие вопросы