Mover o conteúdo da pasta para a pasta pai - Linux Commandline

18

Eu tenho uma pasta A que contém a pasta B que contém muitos arquivos. Gostaria de me livrar da pasta B, mas não do seu conteúdo. Quero que esse conteúdo esteja dentro da pastaA. Como posso fazer isso na linha de comando?

NewLinuxUser
fonte

Respostas:

28
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
Pausado até novo aviso.
fonte
1
pasta mvB / *. ? qual é o ponto?
NewLinuxUser
8
Cuidado com os arquivos de ponto (arquivos cujo nome começa com.), Pois isso não os incluirá. Faça mv folderB/.* .para movê-los também. @NewLinuxUser, o ponto em sua pergunta é um alias para o diretório de trabalho (neste caso, pasta A).
Brian
1
Isso falhar se folderB/folderBexistir, portanto, tenha cuidado em usá-lo em scripts.
Filipos
1
Isso também falha se folderBcontém uma quantidade insana de arquivos. Você verá bash: /bin/mv: Argument list too longpor causa do uso de *. Se for esse o caso de uso mvem combinação com findcomo afirma @amphetamachine, ou com umfor loop
Javier de la Rosa
2

Resposta rápida:

cd /path/to/folderA
find folderB -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir folderB

Resposta resistente ao 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"
anfetamaquina
fonte