z flag para head command em centos 7 [duplicate]

0
    

Esta pergunta já tem uma resposta aqui:

    

Eu estava lendo esta resposta por @dessert: link sobre como excluir pastas de backup antigas do diretório usando o cron no Ubuntu . O comando dado foi:

find /BACKUPDIR/ -mindepth 1 -maxdepth 1 -type d -print0 | sort -z | head -zn-6 | xargs -0 echo rm -rf

No entanto, o CentOs 7 não gosta da bandeira z em sua chamada para a cabeça:

head: invalid option -- 'z'

Existe uma solução alternativa para o CentOs7?

Eu dei uma olhada: Eu não acho que essa explicação é aplicável à minha pergunta. Eu não vejo como eu mudaria o meu comando se eu quiser excluir backups mais antigos que n.

    
por Seth 18.09.2018 / 20:55

1 resposta

1

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' '\n
find /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

%pre%

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

    
por 18.09.2018 / 21:31