Ich wollte eine Datei mit dem Namen erstellen test
. Versehentlich renne ich mkdir test
statt touch test
.
Ist es möglich, ein test
Verzeichnis in eine Datei mit dem Namen zu konvertieren test
?
Was ist mit der Konvertierung einer Datei mit dem Namen test
in ein Verzeichnis mit dem gleichen Namen?
rm -f test && touch test
außer das weiß ich wirklich nichtAntworten:
Dies ist für kein Unix oder Linux möglich, das ich jemals angerührt habe.
Unter einigen älteren Unixen sind Verzeichnisse Dateien, die speziell markiert sind, aber immer noch Dateien. Früher konnten Sie beispielsweise ein Verzeichnis
cat
unter SunOS lesen . Viele moderne Dateisysteme verfügen möglicherweise über Verzeichnisse als B + -Bäume oder eine andere Datenstruktur auf der Festplatte. Das Verwandeln einer Datei in ein Verzeichnis oder umgekehrt erfordert also immer ein Löschen und eine Neuerstellung mit demselben Namen.quelle
Nein, es gibt keinen solchen Befehl, weil er absolut sinnlos wäre. Ihre Frage ist wie die Frage nach einer Möglichkeit, eine Box in ein flaches Rechteck umzuwandeln. Was würdest du mit den Dingen in der Box (Verzeichnis) machen? Wie würde das Rechteck der Box entsprechen, aus der es kam?
Dateien und Verzeichnisse haben völlig unterschiedliche Funktionen. Während ein Verzeichnis in der Tat eine Datei in * nix-Systemen ist, gilt dies nur für die Interna des Systems und nicht für das, was Sie als Benutzer sehen. Wenn Sie eine Datei in ein Verzeichnis konvertieren oder umgekehrt, müssen Sie die Datei immer löschen und das Verzeichnis erstellen. Das Beste, worauf Sie hoffen können, ist, dieselbe Inode zu verwenden, aber auch diesbezüglich nicht viel.
quelle
Erstellen Sie eine Funktion, um das zu tun, was Sie wollen. (
bash
oder andere Bourne / POSIX-ähnliche Shell vorausgesetzt)Ich benutze absichtlich
rmdir
was scheitern wird wennadir
kein Verzeichnis oder nicht leer ist (nein-f
erzwingen).touch
läuft nur wennrmdir
erfolgreich ist.Sie können die Funktionsdefinition in Ihre Shell-Anpassungsdatei (
.bashrc
fürbash
) einfügen .quelle
--
?--
markiert das Ende der Flags sormdir
undtouch
weiß, dass alles, was darüber hinausgeht, ein Dateiname ist, auch wenn es mit beginnt-
.Wenn Sie sich fragen, warum Sie dies tun möchten, folgen Sie diesem Thread:
https://community.linksys.com/t5/Wireless-Routers/Media-files-changing-to-folder-types/td-p/504192/highlight/true
Anscheinend hat ein Fehler in der Firmware das Bit im Verzeichniseintrag für die Datei umgedreht, sodass das Betriebssystem glaubte, es handele sich um einen Ordner anstelle einer Datei.
Ich habe zwar nicht den Linksys-Router in Frage, aber etwas hat alle meine JPG-Dateien in leere Ordner geändert. Wenn es eine Möglichkeit gibt, das Bit (oder was auch immer) zu spiegeln, das besagt, dass ein NTFS-Verzeichniseintrag ein Ordner gegen eine Datei ist, würde ich gerne davon erfahren.
Eine der Lösungen in diesem 2 Jahre langen Thread besagte, dass, wenn die Festplatte mit den Ordnern, die als Dateien verwendet wurden, mit einem Mac unter OS / X verbunden ist, der Mac sie wieder als Dateien sieht und sie kann in einen Ordner auf dem Mac kopiert werden. Ich habe keinen Mac, um das auszuprobieren. Wenn also jemand einen Weg kennt, das Bit umzudrehen ...
quelle
Holen Sie sich zunächst Zugriff auf das Terminal und führen Sie es
ls -al file
mit der Datei ausGreifen Sie zunächst Sie die , die Sie zurück in einen ACTUAL-Ordner konvertieren möchten. Wenn Dateien und Unterverzeichnisse aufgelistet sind, bedeutet dies, dass Ihre "Datei" zuvor ein Ordner mit echtem Inhalt war, und Sie können fortfahren:Ausführen:
ODER
Starten Sie das System neu, und stellen Sie den Terminalzugriff wieder her. Führen Sie Folgendes aus:
ODER
HINWEIS: "Datei" sollte durch eine Datei ersetzt werden, die Sie wieder in einen IST-Ordner konvertieren möchten.
Dies ist nur eine willkürliche Methode, um dieses Problem zu lösen. Es entstehen jedoch Berechtigungsanomalien, die Sie entweder
fsck -f
beheben (wenn Sie nicht angemeldet sind) oder bei Bedarf manuell festlegen können.WIEDER ist dies nur eine bewährte Methode, um zu vermeiden, dass die Datei gelöscht werden muss, die zuvor ein nicht leerer Ordner war.
quelle