remove one from files another all linux bash copy cp

one - remove directory linux



¿Cómo evitar el mensaje de advertencia ''son el mismo archivo'' al usar cp en Linux? (2)

Estoy tratando de copiar ciertos archivos de un directorio a otro. Usando este comando

find "$HOME" -name ''*.txt'' -type f -print0 | xargs -0 cp -t $HOME/newdir

Recibo un mensaje de advertencia diciendo

cp: ''/home/me/newdir/logfile.txt'' y ''/home/me/newdir/logfile.txt'' son el mismo archivo

¿Cómo evitar este mensaje de advertencia?


El problema es que intentas copiar un archivo a sí mismo. Puede evitarlo excluyendo el directorio de destino de los resultados del comando de búsqueda de esta manera:

find "$HOME" -name ''*.txt'' -type f -not -path "$HOME/newdir/*" -print0 | xargs -0 cp -t "$HOME/newdir"


Hazlo único en el proceso. Pero esto requiere clasificación

find "$HOME" -name ''*.txt'' -type f -print0 | sort -zu | xargs -0 cp -t "$HOME/newdir"

O si no se trata de los archivos generados, intente usar la opción -u de cp .

find "$HOME" -name ''*.txt'' -type f -print0 | xargs -0 cp -ut "$HOME/newdir"

-u copy only when the SOURCE file is newer than the destination file or when the destination file is missing