Как и в предыдущих ответах (+1 для обоих), хитрость заключается в использовании -type f
предиката.
Обратите внимание, что вместо -exec rm '{}'
вас также можно использовать -delete
предикат. Но не делай этого. С помощью -exec rm '{}'
вы можете (и должны) сначала сделать, -exec echo rm '{}'
чтобы убедиться, что это действительно то, что вы хотите. После этого повторите команду без echo
.
Использование -delete
выполняется быстрее (без дополнительных затрат fork()
и execve()
для каждого файла), но это рискованно, поскольку -delete
работает также как условие, поэтому:
# delete *.tmp files
find . -type f -name '*.tmp' -delete
но если вы ТОЛЬКО меняете аргументы:
# delete ALL files
find . -type f -name '*.tmp' -delete
Если вы когда - нибудь понадобится find
и rm
работать быстрее тонн файлов, проверьте find ... | xargs ... rm
идиомы UNIX.