Myślę, że jestem dość zaawansowany w używaniu find, ale za każdym razem, gdy go używam, nie mogę pamiętać o metodzie zamknięcia opcji -exec przez całe życie. Spędzam dużo czasu czytając za każdym razem, gdy go używam. Czy po prostu nie używam jej wystarczająco dużo lub oczekuję od siebie zbyt wiele? Zacznijmy od typowego przykładu, który mnie frustruje.
Struktura katalogów zawiera pliki ze wszystkimi nieprawidłowymi uprawnieniami ukryte pliki, linki symboliczne itp. Chcę zmienić właściciela na rozsądną wartość
find . -type f -exec chown username {} \;
find . -type d -exec chown username {} \;
find . -type d -exec chgrp usergroup {} \;
find . -type f -exec chgrp usergroup {} \;
(Wybacz mi, jeśli zakończenie jest odwrócone ... Spojrzałem na to godzinę temu i nadal nie jestem pewien)
Ale boję się go uruchamiać z powodu wierzchowców, dowiązań symbolicznych itp. Zrobiłem ostateczny głupek z chmod. * I miałem go wcześniej na sobie. Wiem, że -xdev zrezygnuje z przekraczania partycji, ale nie jestem pewien, co stanie się z plikami znajdującymi się w katalogach, które są dowiązaniami symbolicznymi.
Jak więc opanować tę bestię, która może zabijać kluczowe pliki?
Zaktualizuj przycinanie najlepszych sugestii poniżej i podsumowując:
- Połącz katalog ćwiczeń i podłącz go do innych katalogów ćwiczeń.
- Użyj raczej xargs niż nieintuicyjnego polecenia exec.
- Użyj -exec echo {} dla zdrowia i bezpieczeństwa
- Średnik dwukropek jest wyjątkowy i uciekasz go, dlatego znak ucieczki jest pierwszy
- Komenda -or może pomóc ci łączyć kryteria wyboru.
Jestem trochę zdezorientowany co do print0, ale xargs zawsze był trochę na trudnej do zrozumienia na pierwszy rzut oka praktyce, której staram się unikać.