Eu tenho tentado encontrar um comando para remover todos os arquivos em uma pasta, mas não um tipo de tipo de arquivo. Mas parece que não tenho sorte. O que eu tentei até agora:
set extended_glob
rm !(*.dmg)
# this returns zsh:number expected
rm ./^*.dmg
# this returns no matches found
A versão do zsh que estou usando é zsh 5.0.2 (x86_64-apple-darwin13.0.1)
.
rm -r secrets/!(directory)
ele continua pedindonumber expected
ou às vezes isso me dáevent not found: directory
ksh_glob
opção. “Evento não encontrado: diretório” indica que você está executando o bash (que também entende a!(…)
sintaxe, mas somente depoisshopt -s extglob
).setopt ksh_glob; echo !(a|b)
funciona enquantosetopt ksh_glob; echo !(a)
não ( "número esperado") ...Você pode usar em
find
vez do seu shell:De
man find
:Se você não puder usá-lo
find
por qualquer motivo, aqui está uma maneira de fazer isso comzsh
(ou outras conchas).zsh
sendozsh
, provavelmente existe uma maneira mais simples de fazer isso, mas como eu sou umbash
cara, é isso que eu criei:fonte
find [Process completed]
find
. Sugiro que você publique uma pergunta sobre seufind
problema, mas isso não deve acontecer. Se o fizer, inclua a saída detype -a find
.rm !(*.dmg)
depoisshopt -s extglob
.find is a shell function find is /usr/bin/find
/usr/bin/find
. Você tem uma função chamadafind
definida em um dos seus arquivos de configuração do bash. Já que você está no OSX, provavelmente é~/.profile
.Outra maneira de remover arquivos é com
find
,xargs
erm
:fonte