Поиск всех символических и жестких ссылок на файл в UNIX

Если у меня есть определенный файл в файловой системе UNIX, есть ли способ использовать bash, чтобы найти все ссылки на этот файл, как символический, так и жесткий? Если мне нужны разные команды для каждого, каковы они?

Попробуйте это с помощью GNU find :

 find /start/dir -L -samefile /file/to/check -exec ls -li {} \; 

Пример вывода:

 1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x1 1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x2 1234983 lrwxrwxrwx 1 user1 user1 2 2009-10-31 16:56 ./testx -> x1 2345059 lrwxrwxrwx 1 user2 user2 2 2010-01-03 16:17 ./x3 -> x1 

Вы можете использовать -ls вместо -exec но он будет отображать inode и другую информацию целевого файла вместо отдельных файлов.

Если у вас нет GNU Find, вы можете сделать это:

 find / -inum "$(ls -i /file/to/check | cut -d ' ' -f 1)" 

Но это не будет работать для символических ссылок.

  • Почему размер раздела подкачки должен быть вдвое меньше размера ОЗУ?
  • Какая связь между Unix, Linux, Ubuntu, Debian и Android?
  • Unix «$ @» в качестве параметра
  • См. Историю того, кто все открыл конкретный файл
  • Чем отличается Ctrl + Z и Ctrl + C в командной строке Unix?
  • Перенаправление команд командной оболочки в другую консольную оболочку
  • Bash цитирует unescaped при подстановке команд
  • Как я могу инициировать уведомление, когда заканчивается работа / процесс?
  • Определение размера кэша L2 в Linux
  • Есть ли способ увидеть какой-либо прогресс в tar за файл?
  • Как сбросить переменную $ PATH в Mac OS X?
  • Давайте будем гением компьютера.