Portál AbcLinuxu, 9. května 2025 23:44
Jak mohu zmenit vlastnika mnoha souboru v adresari s ostatnimi vlastniky?
pokusim se to upresnit:
V adresari je 150 souboru, ktere vlastni USER1. Jak mohu zmenit vlastnika vsech techto souboru na vlastnika USER2? Pozor! V adresari je i spousta souboru, ktere vlastni USER3.
Za pomoc diky
-R
, ale pak by to změnilo vlastníka všem, ne jen těm, které vlastní USER1.
find . -user USER1 -exec chown USER2 {} \;
Případně můžete místo '\;
' na konci zkusit '+
'
Materiál k samostudiu: find(1)
, případně xargs(1)
-maxdepth 1
for subor in `find -user USER1` ; do chown USER2 $subor ; donea potom ešte to čo som pastol nižšie
Problémy jsou dva (pokud jsem na nějaký nezapomněl):
1. Bude-li v názvu některého souboru problematický znak (např. mezera), nebude to fungovat.
2. Bude-li těch vyhovujících souborů moc, selže to na překročení počtu resp. celkové velikosti parametrů; u 150 to sice téměř jistě nehrozí, ale je lépe si na to nezvykat.
To s tým počtom súborov som tušil, aj keď zatiaľ som s tým nemal problém, ale tie medzery a iné zákerné znaky ma dostali. Myslel som, že find to escapuje než to pustí ďalej, tak som to teraz skúsil a naozaj nie.
Ďakujem za rozšírenie obzorov.
Kto do pekla používa medzery v názvoch súborov?! Just joking...
chown USER2 `find -user USER1`Ak chcete meniť aj group, tak za USER2 treba doplniť znak ":" a názov grupy. A pozor - find prechádza aj podadresáre, takže ak je to nežiadúce tak to treba vypnúť (man find).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.