Как я могу отфильтровать файловые системы только для чтения из вывода df?

Здесь будут перечислены все файлы в

, причем самый верхний будет самым старым измененным

find <dir> -type f -print0 | xargs -0 ls -ltr

. последнее изменение - самое верхнее

find <dir> -type f -print0 | xargs -0 ls -lt

Обратите внимание, что это работает, только если список имен файлов не превышает общий предел длины командной строки в вашей системе.

3
01.11.2018, 12:56
3 ответа

Насколько мне известно, df не знает о параметрах монтирования, так как для этого есть команда mount. Что вы можете использовать, чтобы получить список устройств и передать их в качестве аргумента df. Вот так:

df --output=pcent,target $(mount -t ext4 | grep rw | cut -d" " -f1)

Это фильтрует по файловой системе ext4, а затем выполняет поиск тех, у кого есть параметры монтирования rw, очищает вывод, который будет использоваться для df, а затем передает список устройств в df. Вы можете поэкспериментировать с командой mountвнутри $(...), чтобы фильтрация соответствовала вашим целям.

0
27.01.2020, 21:15

Да, вторжение snap в список файловых систем может раздражать...

Вы на правильном пути с df -x.... Все снимки используют файловую систему Squashfs только для чтения -1 , поэтому вы можете отфильтровать их все с помощью:

df -xsquashfs
4
27.01.2020, 21:15

Тип файловой системы, используемый в df, относится к формату файловой системы, подобно ext4.

Вы можете найти файловые системы для чтения -записи, отфильтровав/proc/mounts(или выводmount)для rw, а затем использовать их для фильтрации вывода df.

Вы не можете использовать все rwзаписи из /proc/mounts, потому что они также содержат такие записи, как /proc, которые вам не нужны в вашем списке.

Редактировать

#!/bin/bash
df --output=pcent,target | grep -f <(awk '$4 ~ /^rw.*/ { print $2"$" }' /proc/mounts)
2
27.01.2020, 21:15

Теги

Похожие вопросы