Próbowałem znaleźć polecenie usunięcia wszystkich plików w folderze, ale nie rodzaj pliku. Ale chyba nie mam szczęścia. Co próbowałem do tej pory:
set extended_glob
rm !(*.dmg)
# this returns zsh:number expected
rm ./^*.dmg
# this returns no matches found
Używam wersji zsh zsh 5.0.2 (x86_64-apple-darwin13.0.1)
.
rm -r secrets/!(directory)
, ciągle pyta,number expected
a czasem mi to dajeevent not found: directory
ksh_glob
opcji. „Event not found: directory” wskazuje, że korzystasz z basha (który również rozumie!(…)
składnię, ale dopiero poshopt -s extglob
).setopt ksh_glob; echo !(a|b)
działa, podczas gdysetopt ksh_glob; echo !(a)
nie działa („liczba oczekiwana”) ...find
Zamiast powłoki możesz użyć :Od
man find
:Jeśli nie możesz użyć
find
z jakiegokolwiek powodu, oto sposób na zrobienie tego za pomocązsh
(lub innych powłok).zsh
będączsh
, istnieje prawdopodobnie prostszy sposób na zrobienie tego, ale ponieważ jestembash
facetem, oto co wymyśliłem:źródło
find [Process completed]
find
. Sugeruję jednak, abyś zadał pytanie dotyczące swojegofind
problemu, które nie powinno się zdarzyć. Jeśli tak, dołącz wyniktype -a find
.rm !(*.dmg)
poshopt -s extglob
.find is a shell function find is /usr/bin/find
/usr/bin/find
. Masz funkcję o nazwiefind
zdefiniowaną w jednym z plików konfiguracyjnych bash. Skoro jesteś na OSX, to prawdopodobnie~/.profile
.Innym sposobem jest usunięcie z plików
find
,xargs
arm
:źródło