Mover todos os arquivos de uma pasta para a pasta superior

2

Eu estava procurando a resposta para questionar como mover arquivos de uma pasta para a pasta superior e em nenhum lugar eu encontrei a resposta mv name/* .

Por que não posso usar isso para mover arquivos para a pasta superior? A opção mais votada é mv * .[^.]* .. , então minha pergunta é: por que mv name/* . está errado?

Atenciosamente

    
por Nolias 27.03.2015 / 10:06

2 respostas

2

Por causa da globulação . mv name/* . corresponde apenas aos arquivos na pasta que não iniciam com um ponto ( . ). Você pode alterar esse comportamento definindo dotglob em um shell bash:

shopt -s dotglob

Agora, você pode usar mv name/* . para mover TODOS os arquivos e pastas.

Como exemplo, há uma pasta contendo dois arquivos: file e .file :

$ echo *
file
$ shopt -s dotglob
$ echo *
file .file

Aviso: mv * .[^.]* destination funciona sem o dotglob, pois corresponde primeiro * e segundo .[^.]* , o que corresponde a arquivos / pastas que começam com um ponto (não . e .. ).

    
por 27.03.2015 / 10:41
0

Pode ser necessário que você também corresponda a .* não apenas * se o arquivo contiver arquivos-ponto.

Adicione também && rmdir folder ao final de para remover a pasta agora estranha. Isso é salvo porque ele só será executado se o mv retornar com êxito E porque o rmdir não removerá um diretório não vazio.

    
por 27.03.2015 / 10:18

Tags