Удаление каталога + отмена связи файлов

У меня есть папка с множеством файлов, в которых есть несколько ссылок на символы, например

/some_path -> /dir/file1
/some_path2 -> /dir/file2
/some_path3 -> /dir/file3

Но я не помню ни some_path, ни каких файлов из dir, имеющих sym ссылки, указывающие на них.

Теперь мне нужно удалить dir (мне это действительно нужно по некоторым причинам). И я также хочу, чтобы ни один файл не указывал на какой-либо файл из dir, так как я его удалю.

Как мне отменить связь этих файлов? Что, если я просто удалю dir, они сами разойдутся?

1
задан 26 November 2013 в 11:40

2 ответа

Если somepath находятся в том же месте и предполагается, что они находятся в той же файловой системе, что и /dir, мы могли бы сделать предположение и использовать подход Денниса Уильямсона

find -L / -xdev -samefile /dir/file1

Таким образом, если предположить, что /dir/file1 является оригиналом и сказать /opt/foo является символической ссылкой, эта команда должна пройти /, не пересекая границы файловой системы /, и найти все файлы, которые совпадают с оригинальными. Это будет включать в себя символические ссылки и жесткие ссылки.

Мы также могли бы использовать lname, чтобы увидеть, указывает ли содержимое символической ссылки на /dir/file1

find -lname "*passwd*"

Однако, более разумным подходом, вероятно, будет сначала переместить или удалить dir, а затем ищите неработающие символические ссылки, как предложено в ответе пользователя rozcietrzewiacz на соответствующее сообщение

find / -xdev -type l ! -exec test -e {} \; -print

Если вы хотите избавиться от этих неработающих символических ссылок, вы также можете использовать флаг -delete

0
ответ дан 26 November 2013 в 11:40

Чтобы отменить связь файлов,

unlink /path/to/the/link_file

Если вы удалите dir, он не отсоединит себя. ]

enter image description here

0
ответ дан 26 November 2013 в 11:40

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

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