Busca recursivamente arquivos com contagem de link físico específica

3

Eu tenho um diretório "tracking" contendo hardlinks para arquivos / dirs em um segundo diretório (usado para rastrear movimentos / renomeações). Se eu excluir algo na pasta original, nenhum espaço em disco será liberado, pois seu link físico ainda existe. Então eu quero limpar este diretório de "rastreamento" periodicamente. Portanto, eu preciso encontrar todos os arquivos nele, que têm uma contagem de hardlink de 1.

Qual é o caminho mais rápido para encontrar (e remover) recursivamente todos os arquivos com uma contagem de hardlink de 1?

Eu sei que posso fazer algo como find . -type f -exec ls -l {} \+ | grep -P "^.{11}1" e, em seguida, um pouco mais de piping / regexing, mas isso é feio e lento. Estou procurando algo mais limpo e mais rápido.

    
por imsodin 17.08.2016 / 00:13

1 resposta

4

Meu find tem -links opção (estou no Ubuntu 14.04.5 LTS). Para encontrar arquivos que não possuem outros hardlinks, use:

find -type f -links 1

O comando para remover esses arquivos é:

find -type f -links 1 -exec rm -f {} +
    
por 17.08.2016 / 00:30