Eu tenho um diretório com muitos arquivos e diretórios nele. Para arrumar tudo, vou colocar todos esses arquivos em um diretório, então faria algo assim:
$ ls | wc -l
123
$ mkdir new_directory
$ mv * ./new_directory
No entanto, que, obviamente, não vai funcionar, porque então ele vai tentar se mover new_directory
em new_directory
. Existe alguma maneira simples de fazer o que eu quero em uma linha sem que eu precise copiar e colar todos os arquivos e diretórios nesse diretório?
Respostas:
Seu
comando realmente funcionará; apenas imprimirá um aviso de que não pode mover esse diretório para si próprio.fonte
git mv
deverá usar a-k
flag, já que o git falhará por padrão, e não apenas cite um aviso. Então você precisará fazergit mv -k * ./new_dir
.Um oneliner rápido e sujo.
fonte
Se você está apenas procurando os arquivos (ou seja, não os diretórios), então
é a solução mais portátil. Para velocidade, você deve mover find e xargs, com -print0 e -0, mas somente se você tiver o GNU find e xargs.
fonte
find
- embora eu tenha sido definitivamente em sistemas que não têm um, infelizmente :(Nas vezes em que tive esse problema, fiz um dos seguintes:
ou
A segunda forma aproveita os nomes de arquivo de caractere curinga que começam com '.'
fonte
A respeito:
IOW, não mova o conteúdo para um novo diretório, mas coloque esse diretório dentro de um novo.
fonte
De maneira semelhante à resposta de @ Rembrane (embora não seja uma linha):
Isso deve ser 100% portátil - mesmo se
find
estiver ausente do seu sistema.fonte
Minhas sugestões: Como declarado por outros,
vai funcionar encontrar IFF a expansão total é curta o suficiente.
Caso contrário, você pode tentar este que pode ser escalado para um número muito maior de arquivos:
Explicação
fonte
-print0
e-0
e quebra ainda.Usar:
De
xargs
página manual:fonte
Para evitar a mensagem de erro e simplificar:
fará a mesma coisa, mas evitará a mensagem de erro (a menos que você tenha pontos nos nomes das pastas, eu acho).
fonte