Si vous créez un fichier sur Unix/Linux avec des caractères spéciaux, tels que touch \"la*
, vous ne pouvez pas le supprimer avec rm "la*
. Vous devez utiliser le numéro d'inode (vous pouvez si vous ajoutez le \
Avant le nom, je sais, mais vous devez deviner comme utilisateur qu'il a été utilisé dans la création de fichiers).
J'ai vérifié le manuel pour RM, mais il n'y a aucune mention du numéro d'inode. En faisant rm inodenumber
ne fonctionne pas non plus.
Quelle est la commande pour cela?
quelques autres méthodes incluent :
échapper aux caractères spéciaux:
[~] $ rm\"la\*
utilisez la commande de recherche et recherchez uniquement le répertoire actuel. La commande de recherche peut rechercher des numéros d'inode et a une pratique pratique -delete
changer:
[~] $ ls -i 7404301 "La * [.____] [.____] [~] $.] [~] $ trouver. -MaxDepth 1 -Type f -num 7404301 [ * [.____] [~] $ trouver. -MaxDepth 1 -Type f -inum 7404301 -Delete [.____] [~] $ LS -I [.____] [~] $
Peut-être que je manque quelque chose, mais ...
rm '"la*'
Quoi qu'il en soit, les noms de fichiers n'ont pas d'inodes, fichiers. Essayer de supprimer un fichier sans supprimer tous les noms de fichiers qui pointent sur celui-ci endommagera votre système de fichiers.
Si vous Vraiment Voulez-vous faire cela - et votre cas d'utilisation ne ressemble pas vraiment à vous en avant, vous pouvez essayer des outils de débogage du système de fichiers. Si vous êtes prêt à tout perdre, c'est-à-dire.
Par exemple, pour ext2/3/4 la commande debugfs
a une option "kill_file" qui semble prendre une inode. Comme mentionné dans d'autres réponses, ce Will endommager votre système de fichiers, car il y aura des entrées de répertoire pointant vers un fichier inexistant. Exécution fsck
ensuite peut être en mesure de la réparer. Il est peu probable que vous puissiez le faire sur un système de fichiers monté.
Mais je -Fortement recommandé Vous n'utilisez simplement pas de manière appropriée/citant et supprimez de tels fichiers avec la commande régulière rm
comme mentionné dans une réponse antérieure - et utilisez rm -i
Pour une sécurité supplémentaire lors de la gestion des noms de fichiers contenant des caractères de globe tels que *
Le défi que j'avais retiré d'un nom de fichier qui commence par un tableau de bord - RM souhaite toujours l'interpréter comme un nom d'hôte. J'ai résolu cela en utilisant:
rm ./-g4xxx
Bien que je recommande fortement l'approche "Échapper aux caractères spéciaux", il y a toujours la commande clri
lorsque vous voulez vraiment une corruption de systèmes de fichiers fixables.
Vous pouvez supprimer des fichiers commençant par un tiret en appelant rm -- filename
.