Найти папки с определенным именем и без символической ссылки, указывающей на них - PullRequest
3 голосов
/ 03 апреля 2010

Я пытаюсь написать скрипт оболочки под linux, который перечисляет все папки (рекурсивно) с определенным именем и символической ссылкой no , указывающей на него.

Например, у меня есть:

/home/htdocs/cust1/typo3_src-4.2.11
/home/htdocs/cust2/typo3_src-4.2.12
/home/htdocs/cust3/typo3_src-4.2.12

Теперь я хочу просмотреть все подкаталоги / home / htdocs и найти те папки typo3_ *, на которые не указано откуда-либо.

Должно быть возможно с помощью шеллскрипта или команды, но я понятия не имею, как.

Спасибо за помощь

Stefan

1 Ответ

1 голос
/ 03 апреля 2010

Я думаю, что ни одна из распространенных файловых систем не хранит, если есть символические ссылки, указывающие на этот файл в файловом узле, поэтому вам придется сканировать все остальные файлы, чтобы увидеть, является ли это символической ссылкой на этот. Если вы не ограничите свою глубину поиска до определенного уровня, это может занять очень длительное время. Например, если вы хотите выполнить поиск в /home/htdocs, он будет работать примерно так:

# find specified folders:
find /home/htdocs -name 'typo3_*' -type d | while read folder; do
    # list all symlinks pointing to $folder
    find -L /home/htdocs -samefile "$folder"|grep -v "$folder\$"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...