2015-08-14 2 views
2

Я новичок в BASH, и я пытаюсь создать простой скрипт. Я хотел бы запустить сценарий из другого каталога, а затем сценарий должен удалить все мои файлы в моем текущем каталоге. (ТОЛЬКО ФАЙЛЫ) Так функция:Как избежать ошибки `не удается удалить 'XXXXX': это каталог`

eraseAllFiles() 
{ 
    rm * 
    echo "Files deleted!" 
    sleep 1.3 
} 

Таким образом, команда rm * удалить все мои файлы, но затем я получаю эту ошибку:

cannot remove 'XXXXX': is a directory.

Мой вопрос: как я могу избежать этой ошибки?

ответ

3

Вместо rm использование find -type f удалить только файлы:

eraseAllFiles() { 
    find . -maxdepth 1 -type f -delete 
    echo "Files deleted!" 
    sleep 1.3 
} 
+1

'-delete' не поддерживается всеми версиями' find'; стандартным способом является '-exec rm {} +'. – chepner

+0

Да, это правильно, если не-gnu-платформы '-exec rm {} +' должны работать. – anubhava

0

Попробуйте это:

eraseAllFiles() 
{ 
    rm * 2>/dev/null 
    echo "Files deleted!" 
    sleep 1.3 
} 

2>/dev/null часть отправляет стандартный вывод об ошибке /dev/null который фактически означает, что он не отображается.

-2

Если вам нужно удалить оба файла и использование каталогов

rm -r * 
Смежные вопросы