1

Я думаю, что могу держать свой вопрос коротким. Почему следующая команда не производит вывод?

find /usr/share/themes -mindepth 1 -maxdepth 1 -type d -execdir test -d {}/gnome-shell \;

Я ожидал, что он распечатает все папки в /usr/share/themes, которые содержат папку gnome-shell. Несколько веб-сайтов предполагают, что такое использование теста в качестве команды в exec/execdir возможно.

От man find:

-exec command ;
              Execute  command;  true  if 0 status is returned. [...]

2 ответа2

2

–exec и –execdir оценить истинное значение, если именованные возвращает значение 0 в качестве своего состояния выхода.

Это означает, что если вы скажете что-то вроде –execdir test -d {}/gnome-shell \; –print или –exec … \; –something , вещь после –exec будет обработана тогда и только тогда, когда test команда вернет true.  В качестве крайнего примера, вы могли бы даже сказать,

find starting_dir … –execdir test –d {}/gnome-shell \; –exec rm –rf {} \;

хотя это не обязательно лучший способ сделать это.

1

test ничего не выводит, просто возвращает состояние выхода.

Однако, если вы проводите только углубленное тестирование 1, вы можете избежать find полностью:

ls -d /usr/share/themes/*/gnome-shell

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .