递归删除文件(bash)

a c*_*der 0 files bash recursive

我熟悉如何用 PHP 解决这个问题,但是我想更多地练习 bash 脚本。

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

这是我到目前为止所拥有的。它与文件名相呼应,但如果我发出 rm $i,系统将返回在每个文件上找不到的文件。

for i in `ls -bRC1 /foo/temp_folders/* ` ; do echo $i ; rm $i ; done
Run Code Online (Sandbox Code Playgroud)

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

gha*_*per 5

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

编辑:更改了尾随 \; 为+性能注意到这里

  • 我不会使用 -exec rm {} + 而是简单地使用 -delete -> 它比不断调用 Linux 的 exec 快得多。前几天我不得不删除大量文件并尝试了两者, -delete 选项成为绝对赢家 (3认同)