С помощью команды:
ls -la *
Я могу перечислить все свои символические ссылки.
Как я могу удалить все символические ссылки, которые связаны со специальной папкой?
Например:
В моем каталоге у usr/local/bin
меня есть следующие записи:
lrwxrwxrwx 1 root root 50 Apr 22 14:52 allneeded -> /usr/local/texlive/2011/bin/x86_64-linux/allneeded
lrwxrwxrwx 1 root root 47 Apr 22 14:52 amstex -> /usr/local/texlive/2011/bin/x86_64-linux/amstex
lrwxrwxrwx 1 root root 24 Apr 23 19:09 arara -> /home/marco/.arara/arara
Теперь я хочу удалить все ссылки с пути /usr/local/texlive/
Ответы:
Пожалуйста, не забудьте прочитать альтернативный ответ . Это даже более важно, хотя и не оценивается как высокий на данный момент.
Вы можете использовать это, чтобы удалить все символические ссылки:
с современными
find
версиями.В старых версиях find это может быть:
Чтобы ограничить определенную цель ссылки, предполагая, что ни один из путей не содержит символа новой строки:
или красиво отформатированный
if
Может, конечно , также включать в себя более сложное условие , такие как соответствие шаблона сgrep
.С учетом вашего случая:
или красиво отформатированный:
источник
-print
в концеfind
команды, чтобы получить визуальную обратную связь.С современным,
find
который поддерживает-lname
:должен сделать это.
источник
find /usr/local/bin
find
было-lname
больше, чем я поддерживал (примерно с 2003 года).find
я действительно имел в виду GNUfind
. ;) Я использовалusr/local/bin
, потому что это то, что использовал ОП.find
Решение велико.На всякий случай, если ваша находка не поддерживает
-lname
, вот еще один способ, который использует только shell иreadlink
.источник
С
zsh
:$REPLY:P
полностью разрешает путь к свободному от символьных ссылок , поэтому при условии,/usr/local/texlive
что сама символическая ссылка свободна, он удалит все файлы, под которыми после разрешения символической ссылки/usr/local/textlive
будут существовать, которые будут включать ссылки,/usr/local/texlive/foo
но также../texlive/bar
или на/usr/./local/texlive/whatever
или на/some/other/symlink
которые сама по себе указывает символическая ссылка/usr/local/texlive
, и т. д. ,источник
Перейти к пути и установить себе путь конфигурации
источник
usr/local/bin
этоgrep
ищет,grep -E
это путь. В противном случае не было бы соответствующих результатов. Кроме того,h
вls
не служит никакой цели здесь!-h, --human-readable : with -l, print sizes in human readable format (e.g., 1K 234M 2G)
, Подробнее см.man ls
Илиman grep