Grep -v werkt niet bij piping met lokaliseren

Ik heb het volgende commando:

locate -br '^test.sh$'

De uitvoer is:

/home/cas/scripts/test.sh

Ik wil het pad hebben zonder de naam van het bestand. Dus ik deed het volgende om test.sh uit de output te verwijderen:

locate -br '^test.sh$' | grep -v test.sh

Ik verwachtte dat de output zou zijn:

/home/cas/scripts/

Maar in plaats daarvan krijg ik gewoon geen output. Als ik op enter druk, krijg ik geen uitvoer en wacht het gewoon op het volgende commando. Zie onderstaande afbeelding

enter image description here

Niets geeft een output. Ik heb zelfs geprobeerd iets anders, 'cas', om te keren, maar het zou geen uitvoer geven aan. Het lijkt erop dat grep -v gewoon niet werkt. Maar normale grep (dus niet omgekeerd) WERKT. Waarom werkt het niet? Of is er een betere manier om het pad naar een bestand overal vandaan te vinden, maar zonder de bestandsnaam in de uitvoer (het doel is om / home / cas / scripts / te krijgen)?

0
задан 16 December 2020 в 22:51

1 ответ

На самом деле grep -v ШАБЛОН возвращает все строки, которые не содержат ШАБЛОН, поэтому выдает пустой вывод.

Вам может подойти следующее:

locate -br '^test.sh$' | xargs dirname
3
ответ дан 16 December 2020 в 19:51

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

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