Je veux supprimer tous les fichiers qui existent dans les new-files
du dossier d’un autre dossier sous Linux en utilisant les commandes bash.
J’en ai besoin pour deux choses:
Quelle est la meilleure façon de le faire?
Modifier, pour clarifier:
new-files
. cp -r new-files/* other-directory/
. Vous pouvez utiliser la commande suivante:
cd new-files ; find . -exec rm -rf path/to/other-directory/{} \;
Il listera tous les fichiers copiés depuis le répertoire new-files
(le répertoire new-files
ne sera pas pris en compte). Pour chaque fichier, il supprimera la version copiée dans un other-directory
.
Mais vous devez faire attention, si un fichier dans de new-files
efface un fichier dans un other-directory
, vous ne pourrez pas restaurer l’ancien fichier en utilisant cette méthode. Vous devriez envisager d’utiliser un système de gestion des versions (comme Git par exemple).
De ton:
Modifier, pour clarifier:
- J’ai un dossier avec des fichiers appelés
new-files
.- Maintenant, j’exécute
cp -r new-files/* other-directory/
.- Disons que other-directory n’est pas le répertoire dans lequel je voulais les copier, mais il contient déjà d’autres fichiers, donc je ne peux pas simplement faire rm other-directory / *.
- Je dois supprimer tous les dossiers que j’ai accidentellement copiés. Comment je fais ça?
Vous pouvez parcourir le new-files/
original new-files/
et supprimer des fichiers portant le même nom dans l’ other-directory/
:
for file in /new-files/* do rm /other-directory/"$file" done
wee script pour faire ce que vous voulez:
pushd `pwd` cd /path/to/new-files x=`find . -type f` popd echo $x | xargs rm