J'ai essayé de trouver une commande pour supprimer tous les fichiers d'un dossier, mais pas une sorte de type de fichier. Mais il me semble que je n'ai pas de chance. Ce que j'ai essayé jusqu'à présent:
set extended_glob
rm !(*.dmg)
# this returns zsh:number expected
rm ./^*.dmg
# this returns no matches found
La version de zsh que j'utilise est zsh 5.0.2 (x86_64-apple-darwin13.0.1)
.
rm -r secrets/!(directory)
il me demandenumber expected
ou parfois il me donneevent not found: directory
ksh_glob
option. «Événement non trouvé: répertoire» indique que vous exécutez bash (qui comprend également la!(…)
syntaxe, mais seulement aprèsshopt -s extglob
).setopt ksh_glob; echo !(a|b)
marche quandsetopt ksh_glob; echo !(a)
ça ne marche pas ("nombre attendu") ...Vous pouvez utiliser à la
find
place de votre shell:De
man find
:Si vous ne pouvez pas l'utiliser
find
pour une raison quelconque, voici un moyen de le faire aveczsh
(ou d'autres coquilles).zsh
étantzsh
, il y a probablement un moyen plus simple de le faire, mais comme je suis unbash
gars, voici ce que j'ai trouvé:la source
find [Process completed]
find
. Je vous suggère de poster une question sur votrefind
problème, cela ne devrait pas se produire. Si vous le faites, incluez la sortie detype -a find
.rm !(*.dmg)
aprèsshopt -s extglob
.find is a shell function find is /usr/bin/find
/usr/bin/find
. Vous avez une fonction appeléefind
définie dans l'un de vos fichiers de configuration bash. Puisque vous êtes sur OSX, c'est probablement~/.profile
.Une autre façon de supprimer des fichiers est avec
find
,xargs
etrm
:la source