Исключение пути поиска не работает при отказе в разрешении

Используя grep, затем sed:

grep --no-group-separator -B 1 "italic" <yourfilename> | sed -n 1~2p`

Explanation:

grep manual:

-B num
--before-context=num
Вывести num строк ведущего контекста перед совпадающими строками

--no-group-separator
Когда используются -A, -B или -C, не печатать разделитель между группами строк.

sed:

Выберите первую строку из двух. Мы также можем поставить sed -n 1~5p для выбора первой из пяти.

2
09.04.2019, 13:43
2 ответа

Ваша команда

find ~ -path "/home/user/sandboxes/*" -prune -o -name 'some-file.vmdk'

печатает

/home/user/sandboxes/debian7.amd64.buildd
/home/user/sandboxes/debian9.amd64.buildd

, потому что действие по умолчанию, когда никакое действие не указано, заключается в выводе найденных путей. Вышеупомянутые пути найдены, а затем эти пути обрезаны. Сокращение пути поиска не исключает возможность печати этих имен путей.

Однако, если вы добавите -printв самый конец, как в

find "$HOME" -path "$HOME/sandboxes" -prune -o -name 'some-file.vmdk' -print

тогда эти пути будут не напечатаны. Это потому, что теперь у вас есть явное действие (и -print), поэтому никакие действия по умолчанию не запускаются. -printотносится только к правой части -o.

Обратите внимание, что *не требуется, и что с переменной $HOMEлегче работать, чем с ~, особенно в сценариях.


Ваша первая команда,

find ~ -not -path "~/sandboxes/*" -name 'some-file.vmdk'

, скорее всего, не работает, так как ~не заключен в кавычки.

Предполагая, что вместо этого вы использовали $HOME, он также не сокращает путь поиска, что означает, что он по-прежнему будет вводить ~/sandboxes, но никогда не будет печатать имена путей из-под этого пути. Поскольку он входит в каталог, он все равно будет выдавать вам ошибки разрешения, когда он достигает недоступных каталогов.

2
27.01.2020, 22:08

Можно попробовать так:

find ~ \! -path "*/sandboxes/*" -name 'some-file.vmdk'

Или с -черносливом:

find ~ -path "*/sandboxes" -prune -o -name 'some-file.vmdk'

но не могу найти способ удалить печать ~/песочницы

0
27.01.2020, 22:08

Теги

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