Inicio > Debian, Distribuciones, Gentoo, Terminal, Ubuntu > Tip GNU/Linux: Cambiar permisos solo a archivos

Tip GNU/Linux: Cambiar permisos solo a archivos

Miércoles, 22 de julio de 2009 Dejar un comentario Ir a comentarios

terminal-icon

Un tip rápido. Si queréis cambiar rescursivamente los permisos de todos los archivos dentro de un directorio sin que se cambien también los permisos de los directorios subyacentes, podéis utilizar el siguiente comando:

find . -type f -print0 | xargs -0 chmod -x

Voy a explicarlo un poco. find nos permite encontrar archivos en base a las opciones que le pasemos. El punto indica que vamos a realizar la búsqueda sobre el directorio actual, con -type f le indicamos que solo queremos buscar ficheros de tipo “archivo”, para saltarnos los directorios. Y con -print0 hacemos que muestre por la salida estándar todas las coincidencias. Después utilizamos una pipeline para hacer con xargs que la salida del comando find sea tomada por el comando chmod. Como podéis apreciar estoy quitando el permiso de ejecución a todos los archivos dentro de una carpeta. Esto es muy útil cuando copias archivos de un pen drive a tu disco duro.

GD Star Rating
loading...
Share
  1. Jairo
    Jueves, 25 de marzo de 2010 a las 11:00 | #1
    GD Star Rating
    loading...

    Vale hata aquí he llegado yo solo.
    Problema: NO FUNCIONA CON FICHEROS CON ESPACIOS

  2. Jairo
    Jueves, 25 de marzo de 2010 a las 11:06 | #2
    GD Star Rating
    loading...

    Perdon por mi igonorancia peroSI QUE FUNCIONA CON FICHEROS CON ESPACIOS, por el -0 el -print0.
    THANKS YOU VERY MUCH

  3. Jueves, 25 de marzo de 2010 a las 11:11 | #3
    GD Star Rating
    loading...

    Cuando en un script tengas problemas con los espacios de los archivos puedes cambiar el IFS:

    SAVEIFS=$IFS #Guarda el IFS actual
    IFS=$(echo -en “\n\b”) #Modifica IFS para trabajar con ficheros con espacios

    # Hacer cosas

    IFS=$SAVEIFS #Restaurar el IFS

    Saludos.

  1. Sin trackbacks aún.