给定一个目录,其中包含目录和文件树,可能包含日志文件。
如何知道运行特定应用程序后哪些文件发生了变化。
考虑到修改时间有时是有用的,有时不是,所以我们需要同时处理这两种情况
- 仅检查逻辑大小并忽略修改时间
- 同时考虑逻辑大小和修改时间
答案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}; };
进一步的命令分解是这里