![获取 Linux 中脚本运行前后的变化(基于日期和大小)](https://linux22.com/image/1611390/%E8%8E%B7%E5%8F%96%20Linux%20%E4%B8%AD%E8%84%9A%E6%9C%AC%E8%BF%90%E8%A1%8C%E5%89%8D%E5%90%8E%E7%9A%84%E5%8F%98%E5%8C%96%EF%BC%88%E5%9F%BA%E4%BA%8E%E6%97%A5%E6%9C%9F%E5%92%8C%E5%A4%A7%E5%B0%8F%EF%BC%89.png)
给定一个目录,其中包含目录和文件树,可能包含日志文件。
如何知道运行特定应用程序后哪些文件发生了变化。
考虑到修改时间有时是有用的,有时不是,所以我们需要同时处理这两种情况
- 仅检查逻辑大小并忽略修改时间
- 同时考虑逻辑大小和修改时间
答案1
第一种情况 - 仅限尺寸
添加以下脚本然后.bashrc
就可以像这样使用了 diff_sizes script.sh
# Use the file names, not the relative path to them, as we grep like that ./PRE_DU
PRE_DU=sizes_before.du
POST_DU=sizes_after.du
diff_sizes() { du -ab | grep -Pv "^0\t" | grep -Pv "[0-9]+\t./(${PRE_DU})|(${POST_DU})" >${PRE_DU}; $1; du -ab | grep -Pv "^0\t" | grep -Pv "[0-9]+\t./(${PRE_DU})|(${POST_DU})+" >${POST_DU}; diff ${PRE_DU} ${POST_DU}; };
第二种情况 - 大小和日期
添加以下脚本然后.bashrc
就可以像这样使用了 diff_sizes_and_dates script.sh
alias file_sizes_and_dates="find . -type f -exec ls -al {} + | awk {'printf(\"%8s\t%s %2s %5s %s\n\",\$5,\$6,\$7,\$8,\$9)'}"
PRE_DU=sizes_before.du
POST_DU=sizes_after.du
diff_sizes_and_dates() { file_sizes_and_dates | grep -Pv "^\s*0\t" | grep -Pv " ./(${PRE_DU})|(${POST_DU})$" >${PRE_DU}; $1; file_sizes_and_dates | grep -Pv "^\s*0\t" | grep -Pv " ./(${PRE_DU})|(${POST_DU})$" >${POST_DU}; diff ${PRE_DU} ${POST_DU}; };
进一步的命令分解是这里