Mais informações são necessárias. Qual plataforma?
Jarmund 18/04
4
@ Jarmund Eu acho que é seguro assumir alguns * nix, considerando que os dois comandos mencionados são comandos comuns em sistemas similares ao Unix. A esse respeito, acho seguro dizer que a maioria das conchas funciona da mesma maneira. Portanto, podemos deduzir o suficiente para fornecer uma resposta útil, mesmo que a plataforma exata não esteja explicitamente declarada.
Outra armadilha a ser mencionada. Você NUNCA deve executar mvou cp" " com dados não confiáveis. Isso ocorre porque " " é expandido e arquivos com nomes como "--verbose" obtêm argumentos da linha de comando. O que usar em vez disso:cp ./* anotherFolder
VasyaNovikov 27/02
Respostas:
30
Meu palpite é que o bash expande o curinga e, assim, move todas as pastas para a última.
Por exemplo:
$ ls
test1 test2 test3 test4
$ mv *
$ ls
test4
$ ls test4
test1 test2 test3
Aqui, mv *é expandido para mv test1 test2 test3 test4corresponder ao mv [OPTION]... SOURCE... DIRECTORYformato. Assim, cada pasta é movida para a última.
Este. A propósito, se você deseja usar *um mv(ou cp), dê uma olhada no --target-directoryswitch deles . Isso garante que você não se deixe levar por coisas assim.
um CVn
2
Conforme descrito por @ssssteffff, with mv *, o shell está fazendo expansão de curinga a partir dos arquivos no diretório atual. No entanto, o comportamento do mvcomando depende de quantos argumentos se *expande. Se houver mais de dois argumentos, o último argumento deverá ser um diretório:
mv [OPTION]... SOURCE... DIRECTORY
Então,
Eu criei 5 arquivos
$ touch 1 2 3 4 5
$ ls
1 2 3 4 5
$ mv *
mv: target ‘5’ is not a directory
$ ls
1 2 3 4 5
Agora, se eu criar um diretório que vem como último parâmetro para a expansão de curingas, então:
$ mkdir 6
$ mv *
$ ls
6
$ ls 6
1 2 3 4 5
Você deve verificar qual foi o último argumento.
Se o último argumento foi um diretório, talvez seus dados estejam seguros.
Se o número total de argumentos for 2 e o último argumento for um diretório, talvez seus dados também estejam seguros.
Se o número total de argumentos for 2 e o último argumento for um arquivo, o segundo arquivo desaparecerá com certeza.
mv
oucp
" " com dados não confiáveis. Isso ocorre porque " " é expandido e arquivos com nomes como "--verbose" obtêm argumentos da linha de comando. O que usar em vez disso:cp ./* anotherFolder
Respostas:
Meu palpite é que o bash expande o curinga e, assim, move todas as pastas para a última.
Por exemplo:
Aqui,
mv *
é expandido paramv test1 test2 test3 test4
corresponder aomv [OPTION]... SOURCE... DIRECTORY
formato. Assim, cada pasta é movida para a última.fonte
*
ummv
(oucp
), dê uma olhada no--target-directory
switch deles . Isso garante que você não se deixe levar por coisas assim.Conforme descrito por @ssssteffff, with
mv *
, o shell está fazendo expansão de curinga a partir dos arquivos no diretório atual. No entanto, o comportamento domv
comando depende de quantos argumentos se*
expande. Se houver mais de dois argumentos, o último argumento deverá ser um diretório:Então,
Eu criei 5 arquivos
Agora, se eu criar um diretório que vem como último parâmetro para a expansão de curingas, então:
Você deve verificar qual foi o último argumento.
Tem certeza de que não viu o erro em algo assim?
fonte