递归删除文件(bash)

递归删除文件(bash)

我熟悉如何使用 PHP 来解决这个问题,但是我想多练习一下 Bash 脚本。

任务是删除文件夹中的所有文件,该文件夹本身包含子文件夹(包含文件)。这些文件通常是 .pdf(或某些变体:PDF、Pdf、pDf 等),但有时也可能有其他文件类型,包括我目前不知道的扩展名。

这是我目前得到的结果。它回显了文件名,但如果我发出 rm $i,系统会在每个文件上返回未找到的文件。

for i in `ls -bRC1 /foo/temp_folders/* ` ; do echo $i ; rm $i ; done

发出 rm $i 时如何强制使用绝对路径?

答案1

Per Zoredache...为什么不呢:
find /foo/temp_folders/ -type f -iname * -exec rm {} +

编辑:将尾随的 \; 更改为 + 以提高性能,如上所述这里

答案2

find -exec 在处理大量文件时会很慢。我建议:

find /foo/temp_folders -type f -print0 | xargs -0 rm

相关内容