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/folderBexiste, así que tenga cuidado de usarlo en scripts.
folderBcontiene una cantidad increíble de archivos. Verá bash: /bin/mv: Argument list too longpor el uso de *. Si ese es el caso, use mven combinación con findlo 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"