Как составить список файлов и каталогов точки монтирования

Как составить список файлов и каталогов точки монтирования

Учитывая точку монтирования, например /dev/sda1, как я могу вывести список содержимого этой файловой системы с помощью скрипта оболочки. Моя цель — удалить самый старый файл на этом диске.

решение1

/dev/sda1является блочным устройством. Оно может содержать файловую систему. При монтировании эта файловая система может быть доступна в некоторой точке монтирования, например /home, /, и внутри этой файловой системы некоторые каталоги могут, в свою очередь, быть точками монтирования для других файловых систем (они могут находиться в других блочных устройствах, или виртуальных, например /proc, , или сетевых...).

Если /dev/sda1смонтировано на /, удалить самую старую (с точки зрения времени последней модификации)обычныйfile, в последней системе GNU вы можете сделать следующее:

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

Флаг -xdevуказывает findпридерживаться одной файловой системы, то есть не переходить в другие файловые системы, смонтированные /в данном случае.

Обратите внимание, что другие файловые системы могут скрывать файлы в файловой системе своей точки монтирования. Например, если /dev/sda1смонтировано на /, но содержит /home/some-old-fileи /dev/sda2смонтировано на /home, /home/some-old-fileне будет доступно.

По крайней мере, в Linux вы можете обойти это, выполнив привязку монтирования /в другом каталоге:

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

Тогда все файлы в смонтированной файловой системе /будут доступны через /mnt/side-access-to-root.

Затем вы можете опустить -xdevи использовать zshподстановку для удаления самого старого файла:

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

решение2

/dev/sda1 — это не точка монтирования, а указатель на раздел на вашем диске.

Чтобы смонтировать диск, используйте

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

Затем, чтобы получить список всех файлов по указанному пути, вы можете использовать

ls

Однако, чтобы удалить все файлы старше X дней, вы можете использовать:

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

Связанный контент