Warum kann ich keinen Ordner und keine Datei mit demselben Namen haben?

21

Ich hatte dieses Problem noch nie, kann meinen Ordner jedoch aus irgendeinem Grund nicht in umbenennen packages/.

Dies ist die Struktur:

root
  -  packages_old/
  -  packages

Wenn ich versuche, den Ordner mit Thunar umzubenennen, erhalte ich eine Fehlermeldung, dass die Datei bereits vorhanden ist. Gleiche mit mv:

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

Warum kann ich meine Datei und meinen Ordner nicht so umbenennen, dass sie denselben Namen haben:

root
  -  packages/
  -  packages

Ich schwöre, ich habe das schon mal gemacht.

Mixer
quelle
19
Dein Gedächtnis ist wahrscheinlich nicht so narrensicher, wie du denkst. Auf der Unix-Plattform "ist alles eine Datei". Sie können keine Datei und keinen Ordner mit demselben Namen haben, da Verzeichnisse nur eine bestimmte Art von Datei sind. Es hängt mit den traditionellen .dErweiterungen für Verzeichnisse in zusammen /etc. Angenommen, Sie haben es getan, ls packagesoder vim packages- wie würde das System wissen, ob Sie das Verzeichnis oder die Datei wollten?
JW013
2
Können Sie uns vielleicht sagen, welches Betriebssystem Sie verwenden? Da Sie auf den meisten Betriebssystemen, die ich kenne, keine Datei und kein Verzeichnis mit demselben Namen haben können
rahmu
2
@ j013, warum hast du in einem Kommentar geantwortet und keine Antwort geschrieben ?
Andcoz
1
Dies ist auch unter Windows nicht möglich. Der Versuch, dies auf meinem Windows 7-Computer zu tun, führt zu folgendem Fehler:There is already a file with the same name as the folder name you specified. Specify a different name.
Chris Down
4
In Windows werden Erweiterungen standardmäßig ignoriert, sodass sich ein packageVerzeichnis und eine package.txtDatei im selben Ordner befinden können. In Windows Explorer scheint es, dass Sie Einträge mit dem Namen "package" haben, in der Tat verbirgt es nur einen Teil des Dateinamens von einem.
Arcege

Antworten:

35

In Unix ist fast alles eine Datei. Ein Verzeichnis ist ein spezieller Dateityp, der aus Benutzersicht andere Dateien "enthalten" kann.

Der Fehler Not a directorytritt auf, weil Ihre vorhandene Datei kein Verzeichnis ist und da ein Verzeichnis ein Dateityp ist und es nicht zwei Dateien mit identischem Namen in einem Verzeichnis geben kann, kann der Vorgang nicht ausgeführt werden.

Chris Down
quelle
6
In Bezug auf Ihr Speicherproblem hatten Ihre Datei und Ihr Verzeichnis in der Vergangenheit möglicherweise den gleichen Namen, jedoch in einer anderen Groß- / Kleinschreibung, wie "package" und "Package". Bei Dateinamen muss die Groß- und Kleinschreibung beachtet werden, damit dies funktioniert.
noamtm
2

Denn wenn Sie in der Lage wären, so etwas zu tun, wäre das Leben für Programmierer wie mich miserabel, wenn ich versuche, Dateien in einem Verzeichnis zu iterieren.

Für den folgenden Pseudocode:

isDir('/path/to/same_file_and_folder_name')

Sollte das Betriebssystem richtig oder falsch antworten?

Scott Yang
quelle
Es sollte nur "beides" zurückgeben.
Anthon
3
isAlive (" Schrödingers Katze ") :-)
G-Man sagt "Reinstate Monica"
1
@ G-Man Typ Boolescher Wert erwartet, Objekt erhalten (Versprechen).
Scott Yang