我发现了以下内容,它将列出所有子目录中的文件,隐藏最后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