varios - renombrar directorio linux




¿Cómo forzar a 'cp' a sobrescribir el directorio en lugar de crear otro dentro? (4)

Intento escribir un script Bash que sobrescribirá un directorio existente. Entonces, tengo un directorio foo / y estoy intentando sobrescribir la barra / con ella. Pero cuando lo hago,

cp -Rf foo/ bar/

lo que ocurre es que se crea un nuevo directorio bar / foo /. No quiero eso. Hay dos archivos en foo / a y b. Hay archivos con los mismos nombres en la barra / también. Quiero que el foo / a y foo / b reemplacen bar / a y bar / b.


El siguiente comando garantiza que los archivos punto (archivos ocultos) estén incluidos en la copia:

$ cp -Rf foo/. bar

Hazlo en dos pasos.

rm -r bar/
cp -r foo/ bar/

Puedes hacer esto usando la opción -T en cp .
Ver página Man para cp .

-T, --no-target-directory
    treat DEST as a normal file

Entonces, según su ejemplo, a continuación se muestra la estructura del archivo.

$ tree test
test
|-- bar
|   |-- a
|   `-- b
`-- foo
    |-- a
    `-- b
2 directories, 4 files

Puedes ver la clara diferencia cuando usas -v para Verbose.
Cuando usas solo la opción -R .

$ cp -Rv foo/ bar/
`foo/' -> `bar/foo'
`foo/b' -> `bar/foo/b'
`foo/a' -> `bar/foo/a'
 $ tree
 |-- bar
 |   |-- a
 |   |-- b
 |   `-- foo
 |       |-- a
 |       `-- b
 `-- foo
     |-- a
     `-- b
3 directories, 6 files

Cuando usa la opción -T sobrescribe los contenidos, tratando el destino como un archivo normal y no como un directorio .

$ cp -TRv foo/ bar/
`foo/b' -> `bar/b'
`foo/a' -> `bar/a'

$ tree
|-- bar
|   |-- a
|   `-- b
`-- foo
    |-- a
    `-- b
2 directories, 4 files

Esto debería solucionar tu problema.


Use este comando cp :

cp -Rf foo/* bar/






cp