Récemment, j'ai créé un lien avec les éléments suivants:
Sudo ln -n originalFileLocation
Comment puis-je supprimer un lien dur?
Vous pouvez le supprimer avec rm
comme d'habitude: rm NameOfFile
. Notez qu'avec les liens physiques, il n'y a pas de distinction entre "le fichier d'origine" et "le lien vers le fichier": vous avez juste deux noms pour le même fichier et la suppression d'un seul des noms ne supprime pas l'autre.
J'ai ce script pour supprimer les liens durs redondants. Mais prenez garde - c'est assez dangereux.
#!/bin/bash
clear
echo Reduce redundant hardlinks in the current folder
echo ------------------------------------------------
echo
echo " $(basename $0) [-R]"
echo " -R means recursive"
echo
read -p "You can break by pressing Ctrl+C"
echo
ask=1
if [ a$1 == "a-R" ]; then recursive=" -R "; fi
for i in $(ls -i $recursive | awk '{print $1}' | uniq --repeated | sort);
do
echo "Inode with multiple hardlinked files: $i"
first=1
for foundfile in $(find . -xdev -inum $i);
do
if [ $first == 1 ]; then
echo " preserving the first file: $foundfile"
first=0
else
echo " deleting the redundant file: $foundfile"
#rm $foundfile
fi
done
if [ $ask == 1 ]; then
read -p "Delete all the rest of redundant hardlinks without asking? y/N "
if [ a${REPLY,,} == "ay" ]; then ask=0; fi
fi
# read -p "pause for sure"
echo
done
echo "All redundant hardlins are removed."
echo
En fait, rm
ne fonctionne pas:
[user@localhost Products]$ rm AZP/
rm: cannot remove `AZP/': Is a directory
[user@localhost Products]$ rm -r AZP/
rm: cannot remove `AZP': Not a directory
Ce qui fonctionne est unlink AZP
.
Si vous souhaitez supprimer uniquement le lien et conserver ainsi le fichier d'origine, vous devez utiliser unlink.