referenceid=$(stat -Lc '%d-%i' /home/khodor/aaaaaaaa/q/a.txt)
find ~/aaaaaaaa/ -type l -print0 | while IFS= read -r -d '' filename
do
if [ "$(stat -Lc '%d-%i' "$filename")" = "$referenceid" ]
then
printf -- '%s\n' "$filename"
fi
done
Первоначально получает уникальный идентификатор для базового файла, например, /home/khodor/aaaaaaaa/q/a.txt
. Идентификатор вычисляется из идентификатора устройства и inode, используя stat
.
. Затем он анализирует вашу папку с использованием file
, ограниченного ссылками символьных c (спасибо -type l
), и для для каждого имени файла он получает идентификатор устройства и inode, снова используя stat
, используя свою опцию -L
, которая разыменовывает ссылку перед извлечением идентификатора.
Для каждого идентификатора устройства и узла, соответствующего идентификатору ссылки, он печатает имя файла.