linux 下以广度优先,从根目录开始搜索重复文件,找到5000个截止。
时间: 2024-09-07 22:06:16 浏览: 49
在Linux下,你可以使用`find`命令结合`du`(用于计算磁盘占用空间)和`sort`命令来实现宽度优先的递归查找并删除重复文件,但请注意,这个过程可能需要一些时间,并且最好在测试过小部分文件夹后再处理大量数据,以免误删重要文件。
以下是简单的步骤:
1. 首先,使用`find`命令从根目录开始搜索文件:
```
find / -type f
```
2. 使用`du`计算每个文件的大小,并记录到一个临时文件:
```
find / -type f -print0 | du -sh --files0-from=- > size_list.txt
```
3. 然后,对列表进行排序,按文件大小从小到大排列:
```
sort -n size_list.txt
```
4. 接下来,设置一个计数器(例如5000),并筛选出前5000个重复的文件。这一步可能会比较复杂,因为默认情况下`find`不会直接给出重复文件列表,所以你需要遍历大小排序后的文件,如果发现重复的,就减去计数器,直到达到5000为止。这可以用`awk`、`while`循环等工具配合完成。
```bash
count=5000
awk '{seen[$0]++; if (count && seen[$0] == 2) {print $0; count--;}}' size_list.txt
```
注意:上述脚本会打印出所有重复的文件路径,如果你只想保留其中一个副本,可以使用`mv`或`rm`指令手动删除,但要小心操作,避免意外删除。
阅读全文