Вы все делаете правильно. Это '*' создает проблему (оболочка расширяет ее в список файлов вместо find
). Правильный синтаксис может быть:
cd <your_directory>; find . -type f | xargs rm -f
find <your_directory> -type f | xargs rm -f
(Последнее немного менее эффективно, поскольку оно будет передавать более длинные имена xargs
, но вы вряд ли заметите :-))
В качестве альтернативы, вы можете экранировать ваш '*' следующим образом (однако в этом случае он также попытается также удалить "." И ".."; это не важная персона - вы просто получите небольшое предупреждение :-)):
find . -name '*' | xargs rm -f
find . -name "*" | xargs rm -f
find . -name \* | xargs rm -f
Если ваши имена файлов содержат пробелы, используйте это:
find . -type f -print0 | xargs -0 rm -f