How do I check if two files are different programmatically?

42 次查看(过去 30 天)
Given two files of the same type (e.g., .m, .xlsx, .fig), I'd like to compare them to check if they are the same or not. How can I programmatically call Matlab's comparison functionality and have it return the status of the comparison?
The use case here is that I have a Development folder and a Release folder. I want to check if there has been changes to the Development files in comparison to the Release version, so I know whether or not it needs to be updated.
  1 个评论
dpb
dpb 2021-10-21
MATLAB doesn't have such a builtin comparison functionality for totally general files. You would have several alternatives depending upon how much in depth you want to go --
  1. Check OS timestamps -- if date/time of file in Development folder is later than that of Release, presume modifications. That's what backup routines and version control systems do. This is doable with MATLAB by use of the dir function.
  2. Check actual file content, not just file system date stamp. This would find cases in which the content actually hasn't changed, but the file was opened/touched in such a manner as to have modified the datestamp even if the content didn't actually get modified. There are OS commands to make file comparisons (FC is packaged with the CMD interpreter in Windows), in general it's probably best to just pass the task off to one of those from MATLAB.
  3. "Roll your own" -- not recommended.

请先登录,再进行评论。

采纳的回答

Monika Jaskolka
Monika Jaskolka 2021-10-21
I ended up using the diff command via system:
[~, result] = system(['diff ''', file1, ''' ''', file2, '''']);
When the result is empty, the files are identical. Otherwise they are different.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 File Operations 的更多信息

标签

产品


版本

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by