从所有子目录中删除除最新文件外的所有文件



我发现了以下内容,它将列出所有子目录中的文件,隐藏最后5个,然后删除其余文件:

find -type f -printf '%T@ %Pn' | sort -n | cut -d' ' -f2- | head -n -5 | xargs rm

不幸的是,如果我不知道有多少子目录,它不会删除正确数量的文件。有人有办法遍历每个目录,然后删除每个子目录中除最新文件外的所有文件吗?

目录结构如下:

->基本目录->父目录->子目录

我会写一个脚本。

这将是一个递归函数:

  • 调用函数:rm_files(base_dir(
  • 列出所有目录
  • 如果列表中有目录,则为每个项目调用rm_files(actdir(
  • else(如果没有目录(:
    • 列出所有文件
    • 删除除最新文件外的所有文件
  • 函数返回

如果有很多子目录,则可能是递归函数导致的内存问题。

我发现我可以用以下一行代码做我需要做的事情:

find . -name *.* -mmin +59 -delete > /dev/null

相关内容

  • 没有找到相关文章

最新更新