Je voulais créer un fichier nommé test
. Par accident, je cours mkdir test
au lieu de touch test
.
Est-il possible de convertir un test
répertoire dans un fichier nommé test
?
Qu'en est-il de la conversion d'un fichier nommé test
dans un répertoire du même nom?
rm -f test && touch test
sauf cela, je ne sais vraiment pasRéponses:
Ce n'est possible pour aucun Unix ou Linux que j'aie jamais touché.
Sous certains Unix plus anciens, les répertoires sont des fichiers, spécialement marqués, mais toujours des fichiers. Vous pouviez lire un répertoire avec
cat
sous SunOS, par exemple. De nombreux systèmes de fichiers modernes peuvent avoir des répertoires sous forme d'arbres B + ou une autre structure de données sur disque. Donc, transformer un fichier en répertoire ou vice versa nécessiterait toujours une suppression et une recréation avec le même nom.la source
Non, il n'y a pas de commande de ce genre car cela n'aurait absolument aucun sens. Votre question revient à demander un moyen de transformer une boîte en un rectangle plat. Que feriez-vous avec les choses dans la boîte (répertoire)? Comment le rectangle correspondrait-il à la boîte dont il est issu?
Les fichiers et les répertoires remplissent des fonctions complètement différentes. Alors qu'un répertoire est en effet un fichier dans les systèmes * nix, cela ne s'applique qu'aux éléments internes du système et non à ce que vous, l'utilisateur, voyez. Ainsi, la conversion d'un fichier dans un répertoire, ou vice versa, impliquera toujours la suppression du fichier et la création du répertoire. Le mieux que vous puissiez espérer serait d'utiliser le même inode, mais encore une fois, cela ne sert à rien.
la source
Créez une fonction pour faire ce que vous voulez. (
bash
ou autre shell Bourne / POSIX comme supposé)J'utilise délibérément
rmdir
ce qui échouera s'iladir
n'est pas un répertoire ou non vide (non-f
à forcer).touch
ne fonctionnera qu'en cas dermdir
succès.Vous pouvez mettre la définition de la fonction dans votre fichier de personnalisation du shell (
.bashrc
pourbash
).la source
--
?--
marque la fin des drapeaux ainsirmdir
ettouch
sachez que tout ce qui est passé est un nom de fichier, même s'il commence par-
.Pour ceux qui se demandent pourquoi vous souhaitez faire cela, suivez ce fil:
https://community.linksys.com/t5/Wireless-Routers/Media-files-changing-to-folder-types/td-p/504192/highlight/true
Apparemment, un bogue dans le micrologiciel a renversé le bit dans l'entrée de répertoire du fichier, faisant croire au système d'exploitation qu'il s'agit d'un dossier plutôt que d'un fichier.
Bien que je n'ai pas le routeur Linksys en question, quelque chose a changé tous mes fichiers .jpg en dossiers vides. S'il existe un moyen de retourner le bit (ou autre) qui dit qu'une entrée de répertoire NTFS est un dossier par rapport à un fichier, j'aimerais le savoir.
L'une des solutions de ce fil de discussion de 2 ans a indiqué que si le disque dur contenant les dossiers qui étaient utilisés pour être des fichiers est connecté à un Mac exécutant OS / X, le Mac les verra à nouveau comme des fichiers et ils peut être copié dans un dossier sur le Mac. Je n'ai pas de Mac pour l'essayer, donc si quelqu'un sait comment renverser la vapeur ...
la source
Tout d'abord, accédez au terminal et exécutez
ls -al file
avec le fichier étant le fichier que vous souhaitez reconvertir dans un dossier ACTUAL. Si des fichiers et des sous-répertoires sont répertoriés, cela signifie que votre "fichier" était auparavant un dossier avec un contenu réel et vous pouvez continuer:Exécuter:
OU
Redémarrez le système et récupérez l'accès au terminal et exécutez:
OU
N'OUBLIEZ PAS: "fichier" doit être remplacé par le fichier que vous souhaitez reconvertir dans un dossier RÉEL.
C'est juste une façon arbitraire de résoudre ce problème, mais cela crée des anomalies d'autorisation que vous pouvez soit utiliser
fsck -f
pour corriger (bien que non monté bien sûr) ou définir manuellement de nouvelles autorisations selon les besoins.ENCORE, c'est juste un moyen éprouvé pour éviter d'avoir à supprimer le fichier qui était auparavant un dossier non vide.
la source