Mam około 50 użytkowników w katalogu / home / i sklonowałem repozytorium git dla wszystkich:
Wykonany w / home / jako użytkownik root:
find . -maxdepth 1 -type d ! -name . -prune -exec git clone /shared/repos/project_xpto.git {}/www/xpto/ \;
Teraz muszę ustawić właścicieli tych sklonowanych repozytoriów.
Chcę wykonać chown nazwę_folderu_użytkownika: development -R ./user/www/xpto/ dla każdego sklonowanego repozytorium.
Potem zacząłem od:
find . -maxdepth 1 -regextype sed -regex "./\([A-Za-z0-9-_]\).*" -type d -exec echo {}/ \;
I chcę się zaangażować w:
find . -maxdepth 1 -regextype sed -regex "./\([A-Za-z0-9-_]\).*" -type d -exec chown ${expr1}:development {}/www/xpto/ -R
Wiem, że $ {wyrażenie1} nie istnieje. Chcę tylko wiedzieć, jak zwrócić mój pierwszy dopasowany wzór wyrażenia regularnego, a następnie dostanę nazwę użytkownika, bez kropek i ukośników, z każdego folderu, aby ustawić właściciela.
Odpowiedzi:
Czy
find
to prawdziwy wymóg?Myślę o czymś takim
(Zakładam, że twoje nazwy użytkowników są takie same jak nazwy folderów domowych).
Z powyższym kodem otrzymasz polecenia, które możesz następnie uruchomić z
xargs
tymczasowym skryptem lub w nim.źródło
find
jest lepszy niż parsowaniels
.