gpt4 book ai didi

linux - 递归删除每个目录中除一定数量外的所有文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:43 25 4
gpt4 key购买 nike

我在用于测试的目录中包含大量文件。我需要保留我的应用程序的目录结构,但想要精简文件以加快测试速度。我想将一个目录可以包含的文件数限制为 3 个。我如何在 Linux 中做到这一点?

为了阐明我想要完成的任务,Python 中的解决方案:

import sys, os
for root, dirs, files in os.walk(sys.argv[1]):
for index, file in enumerate(files):
if index > int(sys.argv[2]) - 1: os.remove(os.path.join(root, file))

用法:

python thinout.py /path/to/thin\ out/ <maximum_number_of_files_per_directory>

例子:

python thinout.py testing\ data 3

我找到了 a smiliar question about doing this for one directory, but not recursively .

最佳答案

我会在 bash 中做这样的事情:

for dir in `find . -type d`; pushd $dir; rm `ls | awk 'NR>3'`; popd; done;

或者这个版本可能更好:

for dir in `find . -type d`; pushd $dir; rm `find . -maxdepth 1 -type f | tail -n +3`; popd; done;

当然 - 随机删除目录中除了前 3 个文件之外的所有文件总是有点冒险。买家当心...

顺便说一句,我自己没有测试过这个。只需输入想到的内容即可。您可能需要稍微调整一下才能使其正常工作。再次强调,买家要小心。

关于linux - 递归删除每个目录中除一定数量外的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14492851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com