Терминал показывает только символ>, когда я ввожу эту команду поиска [duplicate]

Я хочу удалить все Файлы .ppm и .png в текущем каталоге. Поэтому после проверки некоторых веб-страниц об использовании команды "find" в Интернете я набрал следующую команду:

find . -type f \( -iname ".png" -o -iname ".ppm \) -exec rm {} \;

, но Терминал просто показал

>

и не сделал Что-нибудь не так.

0
задан 30 November 2018 в 04:21

2 ответа

Вы просто забыли закрывать заключенную в кавычки строку с a " после ".ppm.

> Вы видите, вторичная подсказка Bash, как определено $PS2 переменная среды. Вы получаете его при вводе фрагмента команды, который, как предполагается, продолжается (как, например, потому что это имеет открытую заключенную в кавычки строку или отсутствие done или fi ключевое слово...), но нажимают Enter для создания разрыва строки.

Другая вещь - это -iname ".png" только (нечувствительно к регистру) соответствовал бы файлам точному имени ".png". То, что Вы хотите, должно соответствовать всем файлам, заканчивающимся ".png", таким образом, условие должно быть -iname "*.png" вместо этого. То же для ".ppm", конечно.

Так корректное find команда была бы:

find . -type f \( -iname "*.png" -o -iname "*.ppm" \) -exec rm {} \;

Однако я обычно рекомендовал бы сухое выполнение это без -exec rm {} \; сначала и проверка список файлов снова для правильности, прежде на самом деле позволить ему удалить материал без дальнейшего подтверждения.

Кроме того, как правильно указано в комментариях, Вы можете и вероятно должны заменить -exec rm {} \; с -delete позволять find обработайте удаление внутренне.

3
ответ дан 27 October 2019 в 01:05

Вам не нужно find для этого. Вместо этого можно работать

rm *{.png,.ppm}

в каталоге.

0
ответ дан 27 October 2019 в 01:05

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

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