我有这样的目录结构
Code
├── cse701.tgz
└── cse701
├── cse701.md
├── CSE701.md
├── CSE701_pandoc.md
├── cse701.pdf
├── cse.pdf
├── default.yaml
├── html2tex.log
├── test.md
└── missing.md
tarball 的结构如下:
drwxrwxr-x zenith/zenith 0 2020-12-02 20:18 cse701/
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/default.yaml
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/CSE701.md
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/CSE701_pandoc.md
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/html2tex.log
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/test.md
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/cse701.pdf
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/cse.pdf
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/cse701.md
tar --diff -zf cse701.tgz cse701/
tar --compare -zf cse701.tgz ./cse701/
这篇文章中显示的 diff 和 compare 选项应该指出磁盘中缺少一个不在 tarball 上的文件。
但是,gnu tar 文档说它会显示文件是否已被修改,但会忽略文件系统中在存档中没有相应成员的文件。如果某个文件在存档中存在但在文件系统中不存在,则 tar 会报告差异。
那么如何在创建 tarball 后找到是否有任何新文件添加到文件夹中?
这不是单线,但它可以满足您的需求:
cd /path/to/Code
tar -tf cse701.tgz | sed 's#/$##' >tgz
find cse701 >fs
diff -uw fs tgz
rm fs
rm tgz
解释:
/
行尾的 es(tar -t
将它们放在目录中)find
把没有 /
ES末)本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句