Я создал много символических ссылок на различные пути для определенного файла или каталога. Я хочу весь список созданных путей символических ссылок (местоположение).
Я создал символические ссылки для каталога ~/Pictures
во многих каталогах. Как мне перечислить все символические ссылки на этот каталог ~/Pictures
?
Это возможно? Если да, то как?
Вот пример:
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
в действительности, это может включать символьные ссылки.
Примечания:
-xtype
-type
. Попробуйте это:
ls -i ~/
277566 Pictures
find . -follow -inum 277566
(находят каталоги с тем же число inode )
Оно отобразит все свои пути символьных ссылок.
Мне нравится эта острота больше всего:
find . -maxdepth 1 -type l -exec readlink -f '{}' \;
судьи:
h ttps://unix.stackexchange.com/questions/21984/list-symlinks-in-current-directory
Очень простой, используйте опцию -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), таким образом, Вы не можете быть в состоянии определить местоположение их всех.
../dir
тогда это won' t находят абсолют /path/to/original/dir
, можно вместо этого использовать шаблон и избавиться от ложных положительных сторон -lname \*dir
– Leniel Maccaferri
16.05.2020, 07:13