5 votes

Recherche récursive de fichiers avec un nombre spécifique de liens durs

J'ai un répertoire "tracking" contenant des hardlinks vers des fichiers/dossiers dans un second répertoire (utilisé pour suivre les déplacements/renommages). Si je supprime quelque chose dans le répertoire d'origine, aucun espace disque n'est libéré car son lien dur existe toujours. Je veux donc nettoyer ce répertoire de "suivi" périodiquement. Par conséquent, j'ai besoin de trouver tous les fichiers en elle, qui ont un nombre de hardlink de 1.

Quel est le moyen le plus rapide pour trouver (et supprimer) récursivement tous les fichiers avec un nombre de liens durs de 1 ?

Je sais que je peux faire quelque chose comme find . -type f -exec ls -l {} \+ | grep -P "^.{11}1" et ensuite un peu plus de piping/regexing, mais c'est moche et lent. Je cherche quelque chose de plus propre et de plus rapide.

6voto

Kamil Maciorowski Points 57004

Mon find a -links (je suis sur Ubuntu 14.04.5 LTS). Pour trouver les fichiers qui n'ont pas d'autres hardlinks, utilisez :

find -type f -links 1

La commande pour supprimer ces fichiers est :

find -type f -links 1 -exec rm -f {} +

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X