Я пытался найти команду для удаления всех файлов в папке, но не какой-то тип файла. Но мне, кажется, не повезло. Что я пробовал до сих пор:
set extended_glob
rm !(*.dmg)
# this returns zsh:number expected
rm ./^*.dmg
# this returns no matches found
Я использую версию zsh zsh 5.0.2 (x86_64-apple-darwin13.0.1)
.
rm -r secrets/!(directory)
он продолжает спрашивать,number expected
а иногда и даетevent not found: directory
ksh_glob
опцию. «Событие не найдено: каталог» означает, что вы используете bash (который также понимает!(…)
синтаксис, но только послеshopt -s extglob
).setopt ksh_glob; echo !(a|b)
работает, покаsetopt ksh_glob; echo !(a)
не работает («ожидаемое число») ...Вы можете использовать
find
вместо своей оболочки:От
man find
:Если вы не можете использовать
find
по какой-либо причине, вот способ сделать этоzsh
(или другие оболочки).zsh
в сущностиzsh
, есть, вероятно, более простой способ сделать это, но так как яbash
парень, вот что я придумал:источник
find [Process completed]
find
. Я предлагаю вам опубликовать вопрос о вашейfind
проблеме, однако, это не должно произойти. Если вы делаете, включите выводtype -a find
.rm !(*.dmg)
послеshopt -s extglob
.find is a shell function find is /usr/bin/find
/usr/bin/find
. У вас есть функция,find
определенная в одном из ваших файлов конфигурации bash. Поскольку вы используете OSX, это возможно~/.profile
.Другой способ удаления файлов является с
find
,xargs
иrm
:источник