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?
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?
Respostas:
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
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).
folderB/folderBexistir, portanto, tenha cuidado em usá-lo em scripts.
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
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"