Cómo crear un directorio de forma recursiva, incluidos archivos o directorios ocultos


37

Parece que chown con la bandera recursiva no funcionará en directorios o archivos ocultos. ¿Hay alguna solución simple para eso?

Respuestas:


56

Estoy bastante seguro de que la -Rbandera funciona, siempre me ha funcionado de todos modos. Lo que no funcionará, y lo que me hizo tropezar temprano en mi uso de la línea de comandos, es usarlo *en un directorio con archivos / directorios ocultos. Haciendo

$ chown -R /home/user/*

no hará los archivos y directorios ocultos. Sin embargo, si lo sigues con

$ chown -R /home/user/.[^.]*

entonces harás todos los archivos ocultos (pero no .o ..como /home/user/.*lo harías). Habiendo dicho todo eso, esperaría

$ chown -R /home/user

para obtener todos los archivos y directorios ocultos /home/user, aunque eso, por supuesto, también cambiará los permisos del directorio en sí, lo que podría no ser lo que pretendía.


3
Hacer un chownen el directorio tiene el efecto secundario de que cambie los permisos en el directorio en sí, así como todo su contenido, que puede o no ser lo que desea.
wfaulk

A + funcionó como un encanto para mí.
SuperFamousGuy

Lo intenté chown nginx:nginx -R /path/to/.[^.]*y solo cambió la propiedad a archivos ocultos .dot. no todo.
Pathros

@wfaulk Como mencionó @Hamish Downer, debe hacer ambos *y seguirlo .[.^]*para obtener todos los archivos.
god_is_love

9

Creo que el siguiente comando debería funcionar para esto

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/

1
-h afecta los enlaces simbólicos en lugar de cualquier archivo referenciado (útil solo en sistemas que pueden cambiar la propiedad de un enlace simbólico)
R. van Twisk

8

"chown -R" funciona, pero una alternativa sería usar find.

 find /path/to/dir -exec chown USER {} \;

55
tenga en cuenta que con GNU find, usar en +lugar de ;como el terminador de -exec será más eficiente, ya que usará la cantidad mínima necesaria de horquillas para cortar en lugar de una bifurcación por archivo / directorio
guisado

3

Puede cambiar el dotglobatributo temporalmente para expandirlo. archivos y luego revertirlo.

shopt -s dotglob; chown -R user:group FOLDER; shopt -u dotglob

Más información dotglobse puede encontrar aquí


2

El uso de bucle con la ls -Aopción, podemos encontrar todos los archivos ocultos y el directorio excluir .y ..a continuación, cambiar la propiedad de todos los archivos ocultos y directorio.

for i in `ls -A | grep "^\."`;do chown -R user:group $i;done

Usar xargsopción conls -A

ls -A | grep "^\." | xargs chown user:group

Para más detalles, haga clic aquí y visite mi sitio


1

Además, si eres como yo, probablemente ejecutarás chown principalmente desde el directorio actual. Yo estaba acostumbrado a correr de esta manera: chown rails.rails -R *. Simplemente cambiando el asterisco a un punto (abreviatura del directorio actual) de esta manera: chown rails.rails -R .trae todos los directorios ocultos.


2
Con el efecto secundario de que cambia los permisos en el directorio actual, así como todos sus contenidos, que pueden o no ser lo que desea.
wfaulk

1

chownfuncionará con archivos y directorios ocultos. En el siguiente ejemplo, cambiaremos la propiedad de usuarios y grupos para todos los archivos en ~/some/folder. Todos los archivos incluyen todos los archivos ocultos (por ejemplo .bashrc, .profileetc.) y carpetas en el ~/some/foldernivel y debajo. Tenga en cuenta en particular que no deseamos cambiar la propiedad de ~/some, por lo que excluiremos el archivo ~/some/..de los cambios de propiedad.

$ cd ~/some/folder 
$ sudo chown -R usrname:grpname . 
$ 

Esto funcionó para mí
klor

0

Para dividir TODOS los archivos en el directorio y subdirectorios actuales para el usuario actual;

find . -exec chown $(whoami) {} \;

o si el usuario no puede crear algunos archivos debido a permisos restringidos;

sudo find . -exec chown $(logname) {} \;

-2

Podrías hacer algo como

for i in `ls -A`;do chown -R user:group $i;done

El -A( capital A) es importante ya que excluye '.' y '..'


Esto cambiará solo los archivos y subdirectorios en el directorio actual, no los niveles inferiores. (Que puede ser lo que quiere el OP). También se romperá en los nombres de archivos y directorios con espacios (o pestañas) en ellos.
wfaulk
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.