Как найти и перечислить все символические ссылки, созданные для определенного файла?

Я создал много символических ссылок на различные пути для определенного файла или каталога. Я хочу весь список созданных путей символических ссылок (местоположение).

Пример:

Я создал символические ссылки для каталога ~/Pictures во многих каталогах. Как мне перечислить все символические ссылки на этот каталог ~/Pictures?

Это возможно? Если да, то как?

52
задан 14 March 2014 в 17:55

4 ответа

Вот пример:

find -L /dir/to/start -xtype l -samefile ~/Pictures

или, возможно, лучше:

find -L /dir/to/start -xtype l -samefile ~/Pictures 2>/dev/null

избавиться от некоторых ошибок как Permission denied, Too many levels of symbolic links, или File system loop detected который find бросает их, когда не имеет правильных полномочий или других ситуаций.

  • -L - Перейдите по символьным ссылкам.

  • -xtype l - Файл является символьной ссылкой

  • -samefile name - Файл относится к тому же inode как name. Когда -L в действительности, это может включать символьные ссылки.

Примечания:

  • Используйте нижний регистр L в -xtype l, не цифра 1.
  • На macOS / Darwin, -xtype -type.
42
ответ дан 14 March 2014 в 17:55

Очень простой, используйте опцию -lname:

find / -lname /path/to/original/dir

От man find:

-lname pattern
       File is a symbolic link whose contents match shell pattern pattern.  The
       metacharacters do not treat `/' or `.' specially.  If the -L option or the
       -follow option is in effect, this test returns false unless the symbolic link
       is broken.

Примечание : Помните, что символьные ссылки могли быть где угодно, который включает удаленную систему (если файлы совместно использующего you’re), таким образом, Вы не можете быть в состоянии определить местоположение их всех.

0
ответ дан 14 March 2014 в 17:55

Попробуйте это:

ls -i ~/

277566 Pictures

find . -follow -inum 277566 (находят каталоги с тем же число inode )

Оно отобразит все свои пути символьных ссылок.

0
ответ дан 14 March 2014 в 17:55

Мне нравится эта острота больше всего:

find . -maxdepth 1 -type l -exec readlink -f '{}' \;

судьи:

https://unix.stackexchange.com/questions/22128/how-to-get-full-path-of-original-file-of-a-soft-symbolic-link

h ttps://unix.stackexchange.com/questions/21984/list-symlinks-in-current-directory

0
ответ дан 14 March 2014 в 17:55

Другие вопросы по тегам:

Похожие вопросы: