Tengo una carpeta A que contiene la carpeta B que contiene muchos archivos. Me gustaría deshacerme de la carpeta B, pero no de su contenido. Quiero que esos contenidos estén dentro de la carpeta A. ¿Cómo puedo lograr esto en la línea de comandos?
Tengo una carpeta A que contiene la carpeta B que contiene muchos archivos. Me gustaría deshacerme de la carpeta B, pero no de su contenido. Quiero que esos contenidos estén dentro de la carpeta A. ¿Cómo puedo lograr esto en la línea de comandos?
Respuestas:
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
mv folderB/.* .
para moverlos también. @NewLinuxUser, el punto en su pregunta es un alias para el directorio de trabajo (en este caso, la carpeta A).
folderB/folderB
existe, así que tenga cuidado de usarlo en scripts.
folderB
contiene una cantidad increíble de archivos. Verá bash: /bin/mv: Argument list too long
por el uso de *
. Si ese es el caso, use mv
en combinación con find
lo indicado por @amphetamachine, o con unfor loop
Respuesta rápida:
cd /path/to/folderA
find folderB -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir folderB
Respuesta resistente al código:
cd /path/to/folderA
folderB_temp="$(mktemp -d -t folderB.XXXXXX)"
mv folderB "$folderB_temp"
find "$folderB_temp/folderB" -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir --parents --ignore-fail-on-non-empty "$folderB_temp/folderB"