Я думаю, что я довольно продвинут в использовании find, но КАЖДЫЙ раз, когда я использую его, я не могу на всю жизнь вспомнить метод закрытия опции -exec. Я трачу много времени на чтение каждый раз, когда использую его. Я просто недостаточно использую это или ожидаю от себя слишком многого? Давайте начнем с типичного примера, который расстраивает меня.
В структуре каталогов есть файлы со всеми неверными разрешениями, скрытые файлы, символические ссылки и т. Д. Я хочу сменить владельца на разумное значение
find . -type f -exec chown username {} \;
find . -type d -exec chown username {} \;
find . -type d -exec chgrp usergroup {} \;
find . -type f -exec chgrp usergroup {} \;
(Простите, если окончание задом наперед ... Я смотрел на него час назад, и все же я не уверен)
Но я боюсь запускать его из-за монтировок, символических ссылок и т. Д. Я сделал полный удар по chmod. * И заставил его вернуться на меня раньше. Я знаю, что -xdev не будет пересекать разделы, но я не уверен, что случится с файлами, находящимися внутри каталогов, которые являются символическими ссылками.
Так как же овладеть этим зверем, который может убивать важные файлы?
Обновление обрезки лучших предложений ниже и подведение итогов:
- Имейте каталог практики, связанный и смонтированный с другими каталогами практики.
- Используйте xargs вместо неинтуитивной команды exec.
- Используйте -exec echo {} для здравомыслия и безопасности
- Точка с запятой особенная, и вы избегаете ее, поэтому первым должен быть экранирующий символ
- Команда -or может помочь вам объединить критерии выбора.
Я немного растерялся из-за print0, но xargs всегда был немного непростым на первый взгляд практикой, которой я стараюсь избегать.