Por que não consigo ter uma pasta e um arquivo com o mesmo nome?

21

Eu nunca tive esse problema antes, mas por algum motivo, não consigo renomear minha pasta para packages/.

Esta é a estrutura:

root
  -  packages_old/
  -  packages

Quando tento renomear a pasta com Thunar, recebo uma mensagem de erro informando que o arquivo já existe. Mesmo com mv:

blender iso $ mv packages_old/ packages/
mv: accessing `packages/': Not a directory

Por que não consigo renomear meu arquivo e pasta com o mesmo nome:

root
  -  packages/
  -  packages

Eu juro que já fiz isso antes.

Liquidificador
fonte
19
Sua memória provavelmente não é tão infalível quanto você pensa. Na plataforma unix "tudo é um arquivo". Você não pode ter um arquivo e uma pasta com o mesmo nome porque os diretórios são apenas um tipo especial de arquivo. Está relacionado às .dextensões tradicionais nos diretórios do Windows /etc. Suponha que você tenha - ls packagesou vim packagescomo o sistema saberia se você quisesse o diretório ou o arquivo?
Jw013 11/11
2
Você poderia nos dizer qual sistema operacional está usando? Porque você não pode ter um arquivo e um diretório têm o mesmo nome em mais OS eu sei
rahmu
2
@ j013, por que você respondeu em um comentário e não escreveu uma resposta ?
andcoz
1
Você também não pode fazê-lo no Windows. Na minha máquina Windows 7, tentando fazê-lo produz o erro:There is already a file with the same name as the folder name you specified. Specify a different name.
Chris Baixo
4
No Windows, as configurações padrão são ignorar extensões, para que você possa ter um packagediretório e um package.txtarquivo na mesma pasta. No Windows Explorer, parecerá que você precisa digitar entradas "pacote", quando, na verdade, está apenas ocultando parte do nome do arquivo de um.
Arcege

Respostas:

35

No Unix, quase tudo é um arquivo. Um diretório é um tipo especial de arquivo que, da perspectiva do usuário, pode "conter" outros arquivos.

O erro Not a directoryocorre porque o arquivo existente não é um diretório e, como um diretório é um tipo de arquivo, e não pode haver dois arquivos com nome idêntico em um diretório, a operação não pode ser executada.

Chris Down
fonte
6
Quanto ao seu problema de memória, talvez no passado seu arquivo e diretório tenham o mesmo nome, mas com maiúsculas e minúsculas, como "pacote" e "Pacote". Os nomes de arquivo diferenciam maiúsculas de minúsculas, portanto isso funcionaria.
noamtm 16/10/11
2

Porque se você fosse capaz de fazer isso, a vida seria miserável para programadores como eu quando tento repetir arquivos em um diretório.

Para o seguinte pseudocódigo:

isDir('/path/to/same_file_and_folder_name')

O sistema operacional deve responder verdadeiro ou falso?

Scott Yang
fonte
Deve apenas retornar 'ambos'.
Anthon
3
isAlive (" o gato de Schrödinger ") :-)
G-Man diz 'Reinstate Monica'
1
@ G-Man Tipo booleano esperado, objeto obtido (promessa).
Scott Yang