Я пытаюсь найти, что последние измененные файлы в моей системе говорят за прошлые 2 часа или около этого. Команда, которую я использую:
sudo find / -mmin -120 -printf '%T@ %p\n' | sort -n | cut -f2- -d" " | more
Но вышеупомянутые выводы команды много записей, которые содержат строку /proc
. Так, есть ли какие-либо лучшие пути, которыми я могу удалить те строки из вывода?
Кроме того, если у Вас есть какие-либо лучшие методы для контакта с вышеупомянутой ситуацией, затем предложите. Единственные критерии - то, что вывод должен содержать файлы, а также каталоги.
Править:-
Я изменил вышеупомянутую команду, чтобы также включать имена с newline
, затем ответ добавленного Arronical и ответ Afshin Hamedi на него. Конечный результат:
sudo find / ! -path '*/proc*' -type f -mmin -120 -exec ls -al {} \; | grep -v anystring | less
Вы можете использовать grep -v
для удаления строк, содержащих строку, например '/ proc', вы можете добавить это в качестве канала к вашей команде, чтобы сделать:
sudo find / -mmin -120 -printf '%T@ %p\n' | grep -v '^/proc' | sort -n | cut -f2- -d" " | more
Однако, как файлы в /proc/
носят временный характер, вы, вероятно, получите некоторые ошибки, например
find: â?~/proc/22232/fdinfo/5â?T: No such file or directory
. Вы можете избежать этого, перенаправив STDERR команды find на /dev/null
, используя 2>/dev/null
, например, так :
sudo find / -mmin -120 -printf '%T@ %p\n' 2>/dev/null | grep -v '^/proc' | sort -n | cut -f2- -d" " | more
Лучший метод
Вместо того, чтобы фильтровать результаты и избавляться от сообщений об ошибках, вы можете изменить команду поиска так, чтобы она никогда не выглядела в /proc
:
sudo find / -not -path '/proc/*' -mmin -120 -printf '%T@ %p\n' | sort -n | cut -f2- -d" " | more
Я использовал бы -prune
для такого рода вещи, например,
find / \( -path /proc -o -path /sys -o -path /run \) -prune -o -mmin -120 -printf '%T@ %p\n'
Вы можете исключить путь '/ proc' следующим образом:
[sudo] find / ! -path "/proc" ...
, чтобы исключить записи 'proc' на любом уровне пути, используйте, как показано ниже
[sudo] find / ! -path "*/proc/*" ...