Сводка: Папка A имеет только много Папок файлов Excelent B, имеет много папок смешанных Excelent/Good/Bad файлов, Как я могу удалить файлы в папках Folder B только в случае, если они будут в Папке A. Или просто помещение того же самого: Как сделать проверку Папки файлами, если они существуют в папках Folder B, затем удаляют из папок Folder B?
Идея решения, Возможно, ведьма команды:
Программы дублирования причины были плохи:
Бесполезная история: Файлы были скопированы с Recuva в Папке B и частично расположены, но многие из них плохи таким образом 1-е, я думаю Папка B сравнение, если существуют тем, околдовывают восстановленный снова, но теперь просто Excelent, восстановленный в Папке Recuva так большинство Excelent, будет только в Папке A.
Дерево файла в качестве примера:
.
├── A
│ ├── 1.png
│ ├── 2.png
│ └── Excellent
│ ├── e1.png
│ └── e2.png
└── B
├── 1.png
├── 2.png
├── Bad
│ ├── 1.png
│ ├── 2.png
│ ├── e1.png
│ └── e2.png
└── Excellent
├── e1.png
└── e2.png
Ниже два решения, в зависимости от того, как мы определяем "дубликат":
Если "дубликатом" мы имеем в виду два файла, которые совместно используют тот же относительный путь, то Вы могли использовать find
и xargs
удалить дубликаты. Например, предположите, что Вы имеете
~/tmp% tree A
A
└── Excellent
├── bar
├── baz
└── foo
~/tmp% tree B
B
├── Bad
│ └── quux
├── Excellent
│ ├── bar
│ ├── baz
│ └── foo
└── Good
Затем
find /home/unutbu/tmp/A -depth -type f -print0 | xargs -0 -I{} bash -c 'rm "/home/unutbu/tmp/B${1#*A}"' - {}
результаты в
~/tmp% tree B
B
├── Bad
│ └── quux
├── Excellent
└── Good
Или, если "дубликатом" мы подразумеваем, что два файла совместно используют то же содержание, хотя, возможно, не то же имя файла, затем Вы могли использовать rdfind
:
sudo apt-get install rdfind
Если у нас есть эта структура каталогов:
~/tmp% tree A
A
└── Excellent
├── bar
├── baz
└── foo
1 directory, 3 files
~/tmp% tree B
B
├── Bad
│ └── quux
├── Excellent
│ ├── barbar
│ ├── bazbaz
│ └── foofoo
└── Good
где barbar
имеет то же содержание как bar
, и так же для bazbaz
и foofoo
, затем
rdfind -deleteduplicates true A B
результаты в
~/tmp% tree B
B
├── Bad
│ └── quux
├── Excellent
└── Good
Альтернативное решение в случае, если Ваша версия Ubuntu не включает rdfind:
Вы могли вместо этого использовать fdupes
:
sudo apt-get install fdupes
fdupes --recurse --delete --noprompt A B