Sim, o suporte para registros delimitados por NUL foi adicionado gradualmente aos utilitários GNU nas últimas décadas. GNU head -z
é relativamente recente (2015), enquanto GNU sort
teve -z
por décadas (1996) e xargs
-0
ainda mais (1990).
Aqui, você também pode:
find /BACKUPDIR/ -mindepth 1 -maxdepth 1 -type d -print0 |
sort -rz | sed -z 1,6d | xargs -r0 echo rm -rf
A adição -z
ao GNU sed
é recente (2012), não tão recente quanto head
.
Os utilitários de texto GNU foram capazes de lidar com bytes NUL em suas entradas por décadas, então você sempre pode fazer:
find /BACKUPDIR/ -mindepth 1 -maxdepth 1 -type d -print0 |
tr 'echo rm -rf /BACKUPDIR/*(D/[1,-7])
\n' '\nfind /BACKUPDIR/ -mindepth 1 -maxdepth 1 -type d -print0 |
sort -rz | sed -z 1,6d | xargs -r0 echo rm -rf
' |
sort -r | tail -n +7 |
tr 'find /BACKUPDIR/ -mindepth 1 -maxdepth 1 -type d -print0 |
tr 'echo rm -rf /BACKUPDIR/*(D/[1,-7])
\n' '\n%pre%' |
sort -r | tail -n +7 |
tr '%pre%\n' '\n%pre%' |
xargs -r0 echo rm -rf
\n' '\n%pre%' |
xargs -r0 echo rm -rf
Ou você sempre pode instalar o zsh
e fazer
(veja também qualificador n
glob para ordenar numericamente, então 10 classifica depois de 9, em vez de entre 1 e 2).
(as datas acima são de ChangeLogs, os lançamentos oficiais onde essas mudanças foram incluídas podem ter vindo um pouco mais tarde).