如何比较两个目录并将唯一的文件(名称或内容)移动到其他地方的第一个目录?
How to compare two directories and move files unique (in name or contents) to the 1st directory elsewhere?
我有两个包含文件夹和文件的目录,如下所示
├───dir1
│ │ alpha
│ │ beta.txt
│ │ gamma.exe
│ │ zeta.BIN
│ │
│ ├───delta
│ │ iota.arc
│ │ theta.mp3
│ │
│ └───epsilon
│ │ upsilon.wfbs
│ │
│ └───phi
│ pi.dll
│ sigma.tar
│
└───dir2
│ alpha
│ beta.txt
│ gamma.exe
│
├───delta
│ eta.zip
│ iota.arc
│ theta.mp3
│
└───epsilon
│ upsilon.wfbs
│
└───phi
kappa.dll
sigma.tar
有些文件的文件名相同,但内容不同。例如,如果 alpha
和 iota.arc
在 dir1
中的内容与 dir2
中的内容不同,则 dir3
(其中文件不同于 dir1
到 dir2
被移动了)应该是这样的。
├───dir3
| | alpha
│ │ zeta.BIN
│ │
│ ├───delta
│ │ iota.arc
│ │
│ └───epsilon
│ │
│ └───phi
│ pi.dll
您可以使用 jdupes 来执行此操作,如下所示:
Windows:
jdupes.exe -O -R -d -N dir2 dir1
robocopy dir1 dir1 /S /MOVE
rename dir1 dir3
rmdir /S /Q dir2
Linux:
#! /bin/sh
./jdupes -O -R -d -N ./dir2 ./dir1
find ./dir1 -type d -empty -delete
mv ./dir1 ./dir3
rm -rf ./dir2
注意:这些 scripts/commands 只有在与目标目录相同的目录(该目录还必须包含 jdupes 二进制文件)中执行时才有效。
我有两个包含文件夹和文件的目录,如下所示
├───dir1
│ │ alpha
│ │ beta.txt
│ │ gamma.exe
│ │ zeta.BIN
│ │
│ ├───delta
│ │ iota.arc
│ │ theta.mp3
│ │
│ └───epsilon
│ │ upsilon.wfbs
│ │
│ └───phi
│ pi.dll
│ sigma.tar
│
└───dir2
│ alpha
│ beta.txt
│ gamma.exe
│
├───delta
│ eta.zip
│ iota.arc
│ theta.mp3
│
└───epsilon
│ upsilon.wfbs
│
└───phi
kappa.dll
sigma.tar
有些文件的文件名相同,但内容不同。例如,如果 alpha
和 iota.arc
在 dir1
中的内容与 dir2
中的内容不同,则 dir3
(其中文件不同于 dir1
到 dir2
被移动了)应该是这样的。
├───dir3
| | alpha
│ │ zeta.BIN
│ │
│ ├───delta
│ │ iota.arc
│ │
│ └───epsilon
│ │
│ └───phi
│ pi.dll
您可以使用 jdupes 来执行此操作,如下所示:
Windows:
jdupes.exe -O -R -d -N dir2 dir1
robocopy dir1 dir1 /S /MOVE
rename dir1 dir3
rmdir /S /Q dir2
Linux:
#! /bin/sh
./jdupes -O -R -d -N ./dir2 ./dir1
find ./dir1 -type d -empty -delete
mv ./dir1 ./dir3
rm -rf ./dir2
注意:这些 scripts/commands 只有在与目标目录相同的目录(该目录还必须包含 jdupes 二进制文件)中执行时才有效。