Quiero realizar alguna acción (decir chown ) en todos los archivos ocultos en un directorio.
Sé que este .* es no una buena idea porque también encontrará el . y padre .. directorios (sé que rm no funcionará en . y .. pero otros comandos, incluido chown y chmod , felizmente surtirá efecto)
¡Pero todos mis archivos ocultos tienen nombres diferentes!
¿Cómo debo buscar todos los archivos ocultos mientras excluyo . y .. ?
Respuesta aceptada:
Puede usar el siguiente extglob patrón:
[email protected](!(.|))
-
.coincide con un.al principio -
@()es unextglobpatrón, coincidirá con uno de los patrones del interior, ya que solo tenemos un patrón dentro, lo seleccionará -
!(.|)es otroextglobpatrón (anidado), que coincide con cualquier archivo sin o con un.; Como hemos emparejado.al principio ya, este patrón completo coincidirá con todos los archivos que comienzan con.excepto.y...
extglob está habilitado en sesiones interactivas de bash por defecto en Ubuntu. Si no, habilítalo primero:
shopt -s extglob
Ejemplo:
$ echo [email protected](!(.|))
.bar .foo .spam