Очевидное решение дает код выхода 1:
bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
Одно из возможных решений - пропустить "." и каталоги "..", но удаляются только файлы, имена которых длиннее 3 символов:
bash$ rm -f .??*
Ответы:
Надо ловить все дела. . ?? * будет соответствовать только 3+ символьным именам файлов (как объяснено в предыдущем ответе),. [^.] Будет перехватывать любые две символьные записи (кроме ..).
источник
zsh
. Какие-либо предложения?zsh
умолчанию пустое подстановочное совпадение считается ошибкой; тогда как сbash
ним просто передается без изменений. Чтобы заставитьzsh
себя вести себя так же, вы можете использовать командуunsetopt nomatch
Это сопоставляет все файлы в текущем каталоге, которые начинаются с a,
.
и рекурсивно удаляет их. Скрытые файлы в не скрытых каталогах не затрагиваются.В случае, если вы действительно хотите стереть все из каталога,
find -delete
будет достаточно.источник
.
Лучший способ, вероятно, это:
замените rm на ls -l, если вы просто хотите посмотреть, что будет удалено, для подробного вывода вы можете добавить опцию -v к rm
пс. не забывайте заканчивать '\;'
источник
источник