标题: [文本处理] 比较文件内容,请大神们给个思路 [打印本页]
作者: dailyad 时间: 2020-5-22 15:32 标题: 比较文件内容,请大神们给个思路
本帖最后由 dailyad 于 2020-5-22 17:19 编辑
我现在下载了4个数据的smiles格式数据,打开后里面里面才一行,以空格结尾,如:- C([C@@H](C(=O)O)N)c1ncn(C)c1
复制代码
四个数据的命名规律都不一样,每个数据库文件1-2万,现在想去掉重复的项,思路有两个,请大神们指导一下
1.先提取文件名+数据,保存为CSV,再想办法处理
2.批处理遍历比较内容,输出有相同内容的文件名称。
作者: wujunkai 时间: 2020-5-22 22:01
可以先以文件大小来排序,再根据大小去重,cmd好像是有提供一个命令来判断文件是否相同的,自己help看看
作者: dailyad 时间: 2020-5-23 14:51
可以先以文件大小来排序,再根据大小去重,cmd好像是有提供一个命令来判断文件是否相同的,自己help看看
wujunkai 发表于 2020-5-22 22:01
仔细比较了一下,有一些文件空格后面还可能带有字符,此外,相通大小的文件超级多,所以比较大小不是很靠谱,搜索空格前面的字符,看起来工作量很大。
作者: ivor 时间: 2020-5-23 17:59
powershell利用文件hash值,判断文件是否完全一样。- Get-FileHash *.smiles | Group-Object -Property Hash | Where-Object Count -GE 2
复制代码
作者: went 时间: 2020-5-25 11:39
只有一行数据,可以根据数据内容排序,再做比较,进行分组.ASNI- @echo off
- setlocal enabledelayedexpansion
- REM smiles文件夹
- set "dir=C:\Users\lenovo\Desktop\新建文件夹"
- set "code=( for /r "%dir%" %%i in ("*.smiles"^) do @( for /f "usebackq delims=" %%a in ("%%i"^) do @( echo %%a#%%i ^)^)^) ^| sort"
- set "word="
- for /f "tokens=1* delims=#" %%i in ('%code%') do (
- if not "%%i"=="!word!" (
- echo ------------------
- set "word=%%i"
- echo 内容:!word!
- echo 文件:
- echo. %%j
- ) else echo. %%j
- )
- echo ---------
- pause&exit
复制代码
作者: dailyad 时间: 2020-5-27 18:47
多谢二位
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |