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).