J'essaie de copier certains fichiers d'un répertoire à un autre. Utilisation de cette commande
find "$HOME" -name '*.txt' -type f -print0 | xargs -0 cp -t $HOME/newdir
Je reçois un message d'avertissement disant
cp: '/home/me/newdir/logfile.txt' et '/home/me/newdir/logfile.txt' sont le même fichier
Comment éviter ce message d'avertissement?
Le problème est que vous essayez de copier un fichier sur lui-même. Vous pouvez l'éviter en excluant le répertoire de destination des résultats de la commande find comme ceci:
find "$HOME" -name '*.txt' -type f -not -path "$HOME/newdir/*" -print0 | xargs -0 cp -t "$HOME/newdir"
Rendez-le unique dans le processus. Mais cela nécessite un tri
find "$HOME" -name '*.txt' -type f -print0 | sort -zu | xargs -0 cp -t "$HOME/newdir"
Ou s'il ne s'agit pas des fichiers générés, essayez d'utiliser le -u
option de cp
.
find "$HOME" -name '*.txt' -type f -print0 | xargs -0 cp -ut "$HOME/newdir"
- u copier uniquement lorsque le fichier SOURCE est plus récent que le fichier de destination ou lorsque le fichier de destination est manquant
essayez d'utiliser install
à la place, cela remplace en supprimant d'abord le fichier.
install -v target/release/dynnsd-client target/
removed 'target/dynnsd-client'
'target/release/dynnsd-client' -> 'target/dynnsd-client'
puis supprimez les fichiers source