- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
&2; exit-6ren">
让我们创建一些测试目录树:
#!/bin/bash
top="./testdir"
[[ -e "$top" ]] && { echo "$top already exists!" >&2; exit 1; }
mkfile() { printf "%s\n" $(basename "$1") > "$1"; }
mkdir -p "$top"/d1/d1{1,2}
mkdir -p "$top"/d2/d1some/d12copy
mkfile "$top/d1/d12/a"
mkfile "$top/d1/d12/b"
mkfile "$top/d2/d1some/d12copy/a"
mkfile "$top/d2/d1some/d12copy/b"
mkfile "$top/d2/x"
mkfile "$top/z"
find testdir \( -type d -printf "%p/\n" , -type f -print \)
testdir/
testdir/d1/
testdir/d1/d11/
testdir/d1/d12/
testdir/d1/d12/a
testdir/d1/d12/b
testdir/d2/
testdir/d2/d1some/
testdir/d2/d1some/d12copy/
testdir/d2/d1some/d12copy/a
testdir/d2/d1some/d12copy/b
testdir/d2/x
testdir/z
duplicate directories:
testdir/d1
testdir/d2/d1some
a
和
b
. (和几个目录,没有文件)。
md5deep -Zr .
,也可以使用
perl
走整棵树脚本(使用
File::Find +
Digest::MD5 或使用
Path::Tiny 或类似。)并计算文件的 md5-digests,但这无助于找到重复的
目录 ... :(
code
. (我可以自己编写代码)$HOME
目录被复制到(许多不同的)外部硬盘驱动器中。许多子目录具有相同的内容,但它们位于不同的路径中。所以,现在我试图消除相同内容的目录。
/some/path/project1/a
/some/path/project1/b
/some/path/project2/a
/some/path/project2/x
a
是一个重复的文件(不仅是名称,还有内容)-但这两个项目都需要它。所以我想保留
a
在两个目录中 - 即使它们是重复的文件。因此,我在寻找如何找到重复目录的“逻辑”。
最佳答案
一些关键点:
md5deep -Zr -of /top/dir
是一个很好的起点。 -of
,因为对于此类工作,您不需要计算符号链接(symbolic link)目标或其他特殊文件(如 fifo)的内容 - 只是普通文件。 md5
对于 2.5TB 树中的每个文件,肯定需要几个小时的工作,除非你有非常快的机器。 md5deep
为每个 CPU 核心运行一个线程。因此,当它运行时,您可以制作一些脚本。 md5deep
如 sudo
,因为如果长时间运行后您会收到一些关于无法读取的文件的错误消息,这可能会令人沮丧,这仅仅是因为您忘记更改文件所有权...(请注意):) :) MD5
的文件。摘要(来自 md5deep
的输出。)/path/to/some
仅包含两个文件
a
和
b
和
if file "a" has md5 : 0cc175b9c0f1b6a831c399e269772661
and file "b" has md5: 92eb5ffee6ae2fec3ad71c777531578f
Digest::MD5
你可以这样做:
perl -MDigest::MD5=md5_hex -E 'say md5_hex(sort qw( 92eb5ffee6ae2fec3ad71c777531578f 0cc175b9c0f1b6a831c399e269772661))'
3bc22fb7aaebe9c8c5d7de312b876bb8
作为您的“目录摘要”。排序在这里很重要(!),因为相同的命令,但没有排序:
perl -MDigest::MD5=md5_hex -E 'say md5_hex(qw( 92eb5ffee6ae2fec3ad71c777531578f 0cc175b9c0f1b6a831c399e269772661))'
3a13f2408f269db87ef0110a90e168ae
.
file "aaa" has md5 : 92eb5ffee6ae2fec3ad71c777531578f
file "bbb" has md5 : 0cc175b9c0f1b6a831c399e269772661
sort and md5
你会再次得到:
3bc22fb7aaebe9c8c5d7de312b876bb8
- 例如包含与上述相同文件的目录...
3bc22fb7aaebe9c8c5d7de312b876bb8
这就是说:这个目录正好有以上两个文件
a
和
b
(即使他们的名字不同)。
3a13f2408f269db87ef0110a90e168ae /some/directory
16ea2389b5e62bc66b873e27072b0d20 /another/directory
3a13f2408f269db87ef0110a90e168ae /path/to/other/directory
/some/directory
和
/path/to/other/directory
是相同的,因为它们具有相同的“目录摘要”。
关于bash - 如何找到重复的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43560796/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!