Pourquoi ne puis-je pas avoir un dossier et un fichier du même nom?

21

Je n'ai jamais eu ce problème auparavant, mais pour une raison quelconque, je ne peux pas renommer mon dossier en packages/.

Voici la structure:

root
  -  packages_old/
  -  packages

Lorsque j'essaie de renommer le dossier avec Thunar, j'obtiens un message d'erreur indiquant que le fichier existe déjà. Idem avec mv:

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

Pourquoi ne puis-je pas renommer mon fichier et mon dossier pour qu'ils portent le même nom:

root
  -  packages/
  -  packages

Je jure que je l'ai déjà fait.

Mixeur
la source
19
Votre mémoire n'est probablement pas aussi infaillible que vous le pensez. Dans la plate-forme unix "tout est un fichier". Vous ne pouvez pas avoir un fichier et un dossier du même nom car les répertoires ne sont qu'un type spécial de fichier. Il est lié aux .dextensions traditionnelles des répertoires dans /etc. Supposons que vous l'ayez fait ls packagesou vim packages- comment le système pourrait-il savoir si vous vouliez le répertoire ou le fichier?
jw013
2
Pourriez-vous nous dire quel OS vous utilisez? Parce que vous ne pouvez pas avoir un fichier et un répertoire portant le même nom sur la plupart des systèmes d'exploitation que je connais
rahmu
2
@ j013, pourquoi avez-vous répondu dans un commentaire et n'avez pas écrit de réponse ?
andcoz
1
Vous ne pouvez pas non plus le faire sous Windows. Sur ma machine Windows 7, essayer de le faire génère l'erreur:There is already a file with the same name as the folder name you specified. Specify a different name.
Chris Down
4
Sous Windows, les paramètres par défaut consistent à ignorer les extensions, vous pouvez donc avoir un packagerépertoire et un package.txtfichier dans le même dossier. À partir de l'Explorateur Windows, il apparaîtra que vous devez saisir des entrées appelées "package", alors qu'en fait, il ne fait que masquer une partie du nom de fichier d'un.
Arcege

Réponses:

35

Sous Unix, presque tout est un fichier. Un répertoire est un type spécial de fichier qui, du point de vue de l'utilisateur, peut "contenir" d'autres fichiers.

L'erreur Not a directoryse produit car votre fichier existant n'est pas un répertoire et puisqu'un répertoire est un type de fichier et qu'il ne peut pas y avoir deux fichiers de même nom dans un répertoire, l'opération ne peut pas être effectuée.

Chris Down
la source
6
Quant à votre problème de mémoire, peut-être dans le passé votre fichier et votre répertoire avaient le même nom mais avec une casse différente, comme "package" et "Package". Les noms de fichiers sont sensibles à la casse, donc cela fonctionnerait.
2011
2

Parce que si vous pouviez faire une telle chose, la vie serait misérable pour des programmeurs comme moi lorsque j'essaie d'itérer des fichiers dans un répertoire.

Pour le pseudocode suivant:

isDir('/path/to/same_file_and_folder_name')

Le système d'exploitation doit-il répondre vrai ou faux?

Scott Yang
la source
Il devrait simplement renvoyer «les deux».
Anthon
3
isAlive (" Le chat de Schrödinger ") :-)
G-Man dit 'Reinstate Monica'
1
@ Type G-Man booléen attendu, objet obtenu (promesse).
Scott Yang