Disons que je copie et colle des fichiers à partir du dossier A, qui comprend:
Dossier A:
file1.cfg
file2.txt
file3.esp
file4.bsa
dans le dossier B, qui après la mise à jour, a:
Dossier B:
apples.mp3
file1.cfg *
file2.txt *
file3.esp *
file4.bsa *
turtles.jpg
Existe-t-il un moyen de supprimer tous les fichiers du dossier A qui se trouvent dans le dossier B (marqués d'un *)? En plus de les sélectionner manuellement et de les supprimer, ou de faire un Ctrl-Z juste après le copier-coller
Je préférerais une méthode Windows ou un logiciel qui pourrait le faire
Merci!
windows
windows-explorer
DarkFire13
la source
la source
Réponses:
Il existe un logiciel gratuit appelé WinMerge . Vous pouvez utiliser ce logiciel pour faire correspondre les doublons. Tout d'abord, utilisez
File
→Open
, et choisissez les deux répertoires, avec le dossier contenant les fichiers que vous souhaitez conserver à gauche et ceux que vous n'avez pas à droite. Ensuite, allezView
, et désactivez l' optionShow Different Items
,Show Left Unique Items
etShow Right Unique Items
. Cela ne laissera que les fichiers identiques dans la liste. Après cela, choisissezEdit
→Select All
, faites un clic droit sur n'importe quel fichier, puis cliquez surDelete
→Right
. Cela supprimera les doublons du dossier de droite.la source
Cela peut être fait via la ligne de commande en utilisant la commande
forfiles
Supposons que le dossier A se trouve dans
c:\temp\Folder A
et le dossier B se trouve dansc:\temp\Folder B
La commande serait alors:
Après cela, le dossier B supprimera tous les fichiers présents dans le dossier A. N'oubliez pas que si le dossier B contient des fichiers portant le même nom, mais pas le même contenu, ils seront toujours supprimés.
Il est possible d'étendre cela pour qu'il fonctionne également avec des dossiers dans des sous-dossiers, mais par crainte que cela devienne compliqué et inutile, j'ai décidé de ne pas le publier. Cela nécessiterait les options / s et @relpath (et des tests supplémentaires sur xD)
la source
Vous pouvez utiliser ce script PowerShell:
J'espère que c'est assez explicite. Il examine chaque élément du dossier B, vérifie s'il existe un élément du même nom dans le dossier A et, dans l'affirmative, il supprime l'élément du dossier A. Notez que la finale
\
dans les chemins de dossier est importante.Version une ligne:
Si vous ne vous souciez pas si vous obtenez un déluge d'erreurs rouges dans la console, vous pouvez supprimer le
-EA 'SilentlyContinue'
.Enregistrez-le sous forme de
.ps1
fichier, par exemplededupe.ps1
. Avant de pouvoir exécuter des scripts PowerShell, vous devez activer leur exécution:Vous pourrez ensuite l'invoquer avec
.\dedupe.ps1
lorsque vous serez dans le dossier qui le contient.la source
rsync
rsync
est un programme utilisé pour synchroniser le répertoire. Parmi les nombreuses (vraiment nombreuses) options que vous avez, il y a l'explication--ignore-non-existing
,--remove-source-files
et--recursive
.Tu peux faire
si nous supposons que vous avez les fichiers dans le répertoire A (4) et B (4 + 2).
la source
La réponse de LPChip est la meilleure.
Mais parce que j'ai commencé à apprendre Python, je me suis dit: "Heck, pourquoi ne pas écrire un script Python comme réponse à cette question?"
Installer Python et Send2Trash
Vous devez installer Python avant de pouvoir exécuter le script à partir de la ligne de commande.
Ensuite, installez Send2Trash pour que les fichiers supprimés ne disparaissent pas irrémédiablement mais finissent dans la corbeille du système d'exploitation:
Créer un script
Créez un nouveau fichier avec par exemple le nom
DeleteDuplicateInFolderA.py
Copiez le script suivant dans le fichier.
Usage
Mode de fonctionnement à sec, qui vous montre quels fichiers seraient supprimés sans supprimer aucun fichier:
Mode de suppression de fichiers, qui supprime en effet les fichiers, alors faites attention:
Sortie du mode marche à sec
Sortie du mode de suppression de fichier
Test de l'unité
Si vous souhaitez tester l'application ci-dessus, créez un fichier nommé
DeleteDuplicateInFolderATest.py
et collez-y ces tests:la source
Utiliser bash
Bien sûr, vous pouvez être plus sûr en vérifiant si le fichier est là ou en vérifiant si le nom de fichier est sûr. Mais en supposant que vous vouliez simplement faire cela, et que vous n'avez pas de fichiers nommés de manière ridicule
folderB
- c'est un moyen rapide et sale de le faire. (et vous pouvez utiliser l'émulateur bash fourni avec git , si vous n'exécutez pas Win10 + bash)la source
Tout programme de style CN, comme Total Commander, a une commande de différence de répertoire qui sélectionne les fichiers dans les deux onglets qui sont différents de l'autre onglet. Appelez cette commande,
tab
dans le plus grand répertoire (B), inversez la sélection à l'aide de*
et supprimez. Cela a l'avantage de ne pas supprimer les fichiers qui peuvent avoir changé (d'une manière ou d'une autre) et ne sont pas les mêmes bien qu'ils soient d'accord sur le nom. Vous pouvez utiliser la même commande de répertoire diff pour les localiser après la suppression.Je suppose que je suis coincé dans les années 90 ... mais je n'ai rien vu de plus élégant depuis :-) Jusqu'à présent, c'est la seule réponse qui nécessite aussi peu que 5 touches et aucune script / ligne de commande.
la source
Méthode Windows
Si vous avez toujours besoin de copier des fichiers d'un emplacement vers un autre, puis assurez-vous ensuite que les fichiers qui ont été copiés avec succès sont également supprimés de l'emplacement source d'origine, voici ci-dessous une solution de script par lots que vous pouvez utiliser pour automatiser l'ensemble de la tâche avec juste un cliquez simplement sur chaque course.
Assurez - vous de définir les
SourceDir
et les desDestDir
variables en conséquence pour vos besoins.De plus, dans la partie du script ci-dessous,
("%SourceDir%\*.*") DO
vous pouvez simplement modifier la*.*
valeur pour être plus explicite pour les noms de fichiers (File A.txt
) ou les extensions de fichiers (*.wav
) selon les besoins.Autres ressources
la source