web-dev-qa-db-fra.com

Comment supprimer un répertoire contenant uniquement "". et '..', mais RM dit n'est pas vide?

Ces deux fichiers sont des artefacts de bureau 2011 qui empêchent l'enlèvement du répertoire "contenus". Comment puis-je les supprimer?

sh-3.2# ls -l -a
total 21496
drwx------+ 15 Beef  staff      480 Jan 14 23:32 .
drwxr-xr-x+ 19 Beef  staff      608 Jan 14 23:40 ..
-rw-r--r--@  1 Beef  staff    10244 Jan 10 10:36 .DS_Store
-rw-r--r--   1 Beef  staff        0 Dec 25 23:13 .localized
drwxrwxrwx  47 Beef  staff     1504 Jan  2 00:01 CSC119 - 1228
drwxrwxrwx   7 Beef  staff      224 Jan  1 22:50 Chris 1228
drwxrwxr-x@  3 Beef  staff       96 Aug 25  2010 Contents
drwxrwxrwx@  5 Beef  staff      1
sh-3.2# cd Contents
sh-3.2# ls -l -a
total 0
drwxrwxr-x@  3 Beef  staff   96 Aug 25  2010 .
drwx------+ 15 Beef  staff  480 Jan 14 23:32 ..

Spécifiquement les celles-ci ci-dessus "." et '..' fichiers dans le contenu du contenu. J'utilise une coquille bash sur mon terminal Mac. Je suis en racine.

Merci!

sh-3.2# ls -a -l
total 21496
drwx------+ 15 Beef  staff      480 Jan 14 23:32 .
drwxr-xr-x+ 19 Beef  staff      608 Jan 15 00:19 ..
-rw-r--r--@  1 Beef  staff    10244 Jan 10 10:36 .DS_Store
-rw-r--r--   1 Beef  staff        0 Dec 25 23:13 .localized
drwxrwxrwx  47 Beef  staff     1504 Jan  2 00:01 CSC119 - 1228
drwxrwxrwx   7 Beef  staff      224 Jan  1 22:50 Chris 1228
drwxrwxr-x@  3 Beef  staff       96 Aug 25  2010 Contents
drwxrwxrwx@  5 Beef  staff      160 Dec 28 12:09 Lily 1228
drwxrwxrwx  29 Beef  staff      928 Jan  3 21:48 Old Dell Laptop
lrwxr-xr-x   1 Beef  staff       29 Dec 26 02:51 Relocated Items -> /Users/Shared/Relocated Items
-rwxrwxrwx@  1 Beef  staff  1554944 Jan  8  2019 SanDisk Flashback.pdf
drwxrwxrwx   4 Beef  staff      128 Jan  8  2019 SanDiskSecureAccess
-rwxrwxrwx   1 Beef  staff  8600360 Nov  4  2016 SanDiskSecureAccessV3.01_win.exe
drwxr-xr-x@  9 Beef  staff      288 Jan 10 11:41 Scanned Docs
drwxrwxrwx   4 Beef  staff      128 Dec 19 10:04 google
sh-3.2# rmdir Contents
rmdir: Contents: Directory not empty
sh-3.2# rmdir -p Contents
rmdir: Contents: Directory not empty

Comment puis-je me débarrasser de ce dir?

sh-3.2# ls -a -l
total 21496
drwx------+ 15 Beef  staff      480 Jan 14 23:32 .
drwxr-xr-x+ 19 Beef  staff      608 Jan 15 00:19 ..
-rw-r--r--@  1 Beef  staff    10244 Jan 10 10:36 .DS_Store
-rw-r--r--   1 Beef  staff        0 Dec 25 23:13 .localized
drwxrwxrwx  47 Beef  staff     1504 Jan  2 00:01 CSC119 - 1228
drwxrwxrwx   7 Beef  staff      224 Jan  1 22:50 Chris 1228
drwxrwxr-x@  3 Beef  staff       96 Aug 25  2010 Contents
drwxrwxrwx@  5 Beef  staff      160 Dec 28 12:09 Lily 1228
drwxrwxrwx  29 Beef  staff      928 Jan  3 21:48 Old Dell Laptop
lrwxr-xr-x   1 Beef  staff       29 Dec 26 02:51 Relocated Items -> /Users/Shared/Relocated Items
-rwxrwxrwx@  1 Beef  staff  1554944 Jan  8  2019 SanDisk Flashback.pdf
drwxrwxrwx   4 Beef  staff      128 Jan  8  2019 SanDiskSecureAccess
-rwxrwxrwx   1 Beef  staff  8600360 Nov  4  2016 SanDiskSecureAccessV3.01_win.exe
drwxr-xr-x@  9 Beef  staff      288 Jan 10 11:41 Scanned Docs
drwxrwxrwx   4 Beef  staff      128 Dec 19 10:04 google
sh-3.2# Sudo rm -r -f Contents
rm: Contents: Directory not empty

Il ne supprimera toujours pas.

10
nightanimal

Votre annuaire semble vide, mais la sortie ls indique qu'il est Un fichier de là puisque le décompte de lien pour le répertoire est de 3 au lieu de 2 (un répertoire vide sur un système de fichiers APFS doit avoir un nombre de liaison de 2).

Cela implique que votre système de fichiers a réussi à se mettre dans un état incohérent et que vous devriez probablement exécuter fsck dessus. Sur MacOS, cela se fait en exécutant les premiers secours sur le disque via l'application "Utilitaire de disque". Si le problème est avec votre disque de démarrage principal (souvent appelé "Macintosh HD", au moins par défaut), vous devez le faire à partir du mode de récupération.

Si ceci est le même problème que j'ai rencontré , alors ce sera le plus probable être résolu par de la première fois à vous assurer que vous êtes sur Une version récente de MacOS (quelque part en mars 2019) avant d'exécuter les premiers soins sur le disque en mode de récupération.

Vous entrez en mode de récupération en appuyant sur Cmd+R Dès que vous redémarrez la machine. Une fois en mode de récupération, vous recevrez la possibilité d'exécuter "Utilitaire de disque" à partir d'un menu.

31
Kusalananda

Les entrées de répertoire . Et .. Sont un artefact du début des années 1970, lorsque UNIX a fonctionné sur des machines minuscules et un code nécessaire pour être minuscules.

Donc, les gens ont créé de vrais hardlinks vers des répertoires nommés . Et ... Cette mauvaise idée fait que le nombre de liaisons durs d'un répertoire vide soit 2.

Aujourd'hui, ceci est un non-sens et la définition de POSIX depuis 1988 est que ces entrées n'ont pas besoin d'exister. Leur comportement doit juste être émulé. Cela signifie que si . Ou .. Apparaît dans un nom de chemin, le système de fichiers doit simplement se comporter de bonne manière.

Les systèmes de fichiers modernes n'ont pas de . Ou .. Entrées dans des répertoires et ne pas avoir de comptage de liaison dur de 2 pour un répertoire vide.

ZFS est mis en œuvre de cette façon, mais prétend le comportement historique pour éviter les programmes mal écrits. Donc, ZFS délivre . Et .. Avec readdir() même si ces entrées n'existent pas.

Que vous soyez sur un système de fichiers moderne ou un système de fichiers historique, vous ne pouvez pas supprimer ces entrées.

Maintenant, à votre lien compte 2 ....

Sur un système de fichiers historique, le système d'exploitation estime généralement qu'un répertoire avec un compte de liaison> 2 comporte des sous-répertoires et ne peut donc pas être supprimé.

Si le compte de lien dans votre répertoire n'est pas le résultat d'un "répertoire d'attributs" masqué pour les fichiers d'attributs étendus répertoriés, cela doit être le résultat d'un bogue dans le système de fichiers.

Si votre système d'exploitation ne permet pas de supprimer ce répertoire à l'aide du programme unlink au lieu de rm, tout en étant root, vous devez exécuter fsck.

9
schily

Essayez de redémarrer. Il se peut que vous ayez un processus qui a toujours un fichier supprimé ouvert dans Contents répertoire. Un redémarrage publiera le fichier et vous pourrez supprimer le répertoire.

0
SimonP