So listen Sie Dateien und Verzeichnisse eines Einhängepunkts auf

So listen Sie Dateien und Verzeichnisse eines Einhängepunkts auf

Wie kann ich bei einem Einhängepunkt wie /dev/sda1 den Inhalt dieses Dateisystems mithilfe eines Shell-Skripts auflisten? Mein Ziel ist es, die älteste Datei auf diesem Laufwerk zu löschen.

Antwort1

/dev/sda1ist ein Blockgerät. Es kann ein Dateisystem enthalten. Wenn es gemountet ist, kann dieses Dateisystem an einem Mount-Punkt wie /home, verfügbar sein /, und innerhalb dieses Dateisystems können einige Verzeichnisse wiederum Mount-Punkte für andere Dateisysteme sein (können sich diese in anderen Blockgeräten oder virtuellen Geräten wie /proc, oder Netzwerkgeräten befinden...).

Wenn /dev/sda1auf montiert ist /, um das älteste (hinsichtlich der letzten Änderungszeit) zu entfernen.regulärDatei können Sie auf einem aktuellen GNU-System Folgendes tun:

find / -xdev -type f -printf '%T@:%p\0' |
   sort -zn |
   sed -z 's/[^:]*://;q' |
   xargs -r0p rm -f

Das -xdevFlag weist an find, bei einem Dateisystem zu bleiben, das heißt, /in diesem Fall nicht in andere, darin gemountete Dateisysteme zu wechseln.

Beachten Sie, dass andere Dateisysteme Dateien im Dateisystem ihres Einhängepunkts verbergen können. Wenn beispielsweise /dev/sda1auf eingehängt ist , /aber ein enthält /home/some-old-fileund /dev/sda2auf eingehängt ist /home, /home/some-old-fileist darauf nicht zugegriffen werden.

Zumindest unter Linux können Sie dieses Problem umgehen, indem Sie ein Bind-Mounting /in einem anderen Verzeichnis durchführen:

mount --bind / /mnt/side-access-to-root

/Dann sind alle Dateien im unter gemounteten Dateisystem über verfügbar /mnt/side-access-to-root.

Dann können Sie das weglassen -xdevund Globbing verwenden, zshum die älteste Datei zu entfernen:

rm -i /mnt/side-access-to-root/**/*(D.Om[1])

Antwort2

/dev/sda1 ist kein Einhängepunkt, es verweist auf Ihre Partition auf Ihrem Laufwerk.

Um Ihre Festplatte zu mounten, verwenden Sie

mount -t vfat(OR THE TYPE OF YOUR DRIVE) /dev/sda1 /path/to/mount/to

Um dann alle Dateien in einem Pfad aufzulisten, können Sie verwenden

ls

Um jedoch alle Dateien zu löschen, die älter als X Tage sind, können Sie Folgendes verwenden:

find /path/to/files* -mtime +x -exec rm {} \;

verwandte Informationen