Как удалить строки из вывода, содержащие определенную строку?

Я пытаюсь найти последние измененные файлы в моей системе, скажем, за последние 2 часа или около того. Команда, которую я использую:

sudo find / -mmin -120 -printf '%T@ %p\n' | sort -n | cut -f2- -d" " | more

Но вышеприведенная команда выводит много записей, содержащих строку /proc. Итак, есть ли какие-то лучшие способы, с помощью которых я могу удалить эти строки из вывода?

Кроме того, если у вас есть какие-либо более эффективные методы для решения вышеуказанной ситуации, пожалуйста, предложите. Единственный критерий состоит в том, что вывод должен содержать файлы, а также каталоги.

EDIT: -

Я изменил приведенную выше команду, чтобы также включить имена с [ f4], затем добавил ответ Арроника и ответ Афшина Хамеди на него. Конечный результат:

sudo find / ! -path '*/proc*' -type f -mmin -120 -exec ls -al {} \; | grep -v anystring | less
1
задан 13 April 2017 в 15:23

2 ответа

Я использовал бы -prune для такого рода вещей, например

find / \( -path /proc -o -path /sys -o -path /run \) -prune -o -mmin -120 -printf '%T@ %p\n'
5
ответ дан 23 May 2018 в 06:07
  • 1
    Я пытался использовать чернослив, но с -name, а не -path, или с -path, но с косой чертой, oops! – Arronical 15 September 2016 в 17:32

Вы можете исключить путь '/ proc' следующим образом:

[sudo] find / ! -path "/proc" ...

, чтобы исключить записи «proc» на любом уровне пути, как показано ниже

[sudo] find / ! -path "*/proc/*" ...
2
ответ дан 23 May 2018 в 06:07
  • 1
    Кажется, это не работает для меня. Когда я пытаюсь sudo find / ! -path "/proc" -type d | grep 'proc' | less, я нахожу много записей из /proc – Arronical 15 September 2016 в 15:06
  • 2
    изменить "/ proc" к "* / proc / *" и снова увидеть результат – αғsнιη 15 September 2016 в 15:11
  • 3
    Это не то, что написано в вашем ответе. – Arronical 15 September 2016 в 15:19
  • 4
    @ Акроническое обновление – αғsнιη 15 September 2016 в 15:22

Другие вопросы по тегам:

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