Ich habe versucht, einen Befehl zum Entfernen aller Dateien in einem Ordner zu finden, aber keine Art von Dateityp. Aber ich scheine kein Glück zu haben. Was ich bisher ausprobiert habe:
set extended_glob
rm !(*.dmg)
# this returns zsh:number expected
rm ./^*.dmg
# this returns no matches found
Die Version von zsh, die ich verwende, ist zsh 5.0.2 (x86_64-apple-darwin13.0.1)
.
rm -r secrets/!(directory)
number expected
event not found: directory
ksh_glob
Option nicht eingestellt haben . "Event not found: directory" zeigt an, dass Sie bash ausführen (was auch die!(…)
Syntax versteht, aber nur danachshopt -s extglob
).setopt ksh_glob; echo !(a|b)
funktioniert, währendsetopt ksh_glob; echo !(a)
nicht ("Nummer erwartet") ...Sie können
find
anstelle Ihrer Shell verwenden:Von
man find
:Wenn Sie
find
aus irgendeinem Grund nicht verwenden können , haben Sie hier eine Möglichkeit, dies mitzsh
(oder anderen Muscheln) zu tun .zsh
Seinzsh
, gibt es wahrscheinlich einen einfacheren Weg , dies zu tun , aber da ich binbash
Kerl, das ist , was mit ich kam:quelle
find [Process completed]
find
. Ich schlage vor, dass Sie eine Frage zu Ihremfind
Problem stellen. Dies sollte jedoch nicht passieren. Wenn Sie dies tun, schließen Sie die Ausgabe von eintype -a find
.rm !(*.dmg)
nachshopt -s extglob
.find is a shell function find is /usr/bin/find
/usr/bin/find
. Sie haben eine Funktion,find
die in einer Ihrer Bash-Konfigurationsdateien definiert ist. Da Sie auf OSX sind, ist das wahrscheinlich~/.profile
.Eine andere Möglichkeit , Dateien zu entfernen , ist mit
find
,xargs
undrm
:quelle