He estado tratando de encontrar un comando para eliminar todos los archivos de una carpeta pero no un tipo de archivo. Pero parece que no tengo suerte. Lo que he probado hasta ahora:
set extended_glob
rm !(*.dmg)
# this returns zsh:number expected
rm ./^*.dmg
# this returns no matches found
La versión de zsh que estoy usando es zsh 5.0.2 (x86_64-apple-darwin13.0.1)
.
rm -r secrets/!(directory)
, sigue preguntandonumber expected
o, a veces, me daevent not found: directory
ksh_glob
opción. "Evento no encontrado: directorio" indica que está ejecutando bash (que también comprende la!(…)
sintaxis, pero solo despuésshopt -s extglob
).setopt ksh_glob; echo !(a|b)
funciona mientrassetopt ksh_glob; echo !(a)
no ("número esperado") ...Puede usar en
find
lugar de su shell:De
man find
:Si no puede usarlo
find
por alguna razón, aquí hay una manera de hacerlozsh
(u otros shells).zsh
siendozsh
, es probable que haya una manera más sencilla de hacer esto, pero ya que soy unbash
chico, esto es lo que ocurrió:fuente
find [Process completed]
find
. Sinfind
embargo, le sugiero que publique una pregunta sobre su problema, eso no debería suceder. Si lo hace, incluya la salida detype -a find
.rm !(*.dmg)
despuésshopt -s extglob
.find is a shell function find is /usr/bin/find
/usr/bin/find
. Tiene una función llamadafind
definida en uno de sus archivos de configuración bash. Ya que estás en OSX, eso es probablemente~/.profile
.Otra forma de eliminar archivos es con
find
,xargs
yrm
:fuente