Существует ловушка с ключевыми словами и/или на find
. или
, примененными ко всем следующим параметрам, включая действие (-ls
в вашем примере). Выражения и
без или
(или присоединенные с и
) оцениваются в порядке чтения с конечной остановкой как false. Не существует неявного ()
.
Поэтому команда find POD -type f -name *.mp3 -or -name *.ogg -ls
означает,
*.mp3
--- если шаблон совпадает : STOP! (потому что OR
применяется отсюда и только если предыдущая команда не сработала (но только предыдущая команда, а не предыдущие группы команд)и потому что вы добавили оператор execute (-ls
, -exec
, -print
. ...) в командной строке нет неявной команды -print
и поэтому нечего выполнять, если 1) все условия 1) истинны (файл и образец совпали). Если убрать последний -ls
, то в конце каждой ветви условий появится неявная -print
.
*.ogg
и перечислять их (-ls
не является командой условия, она выполняется только если предыдущая команда/тест "шаблон *.ogg
истинен). Но из-за 1), 2) оценивается только для файлов NON mp3. Если у вас нет файлов .ogg
, вы ничего не увидите. Решение 1 повторите команду выполнения в каждой логической ветви
find POD -type f -name "*.mp3" -ls -or -name "*.ogg" -ls
Решение 2 добавьте (защищенные оболочкой) скобки
find POD -type f \( -name "*.mp3" -ls -or -name "*.ogg" \) -ls
Примечание вы должны защитить шаблоны, чтобы избежать оценки шаблона оболочки в текущем каталоге.
Дорабатываем ответ GAD3R. Чтобы изменить корневой пароль моего Raspberry Pi, я сначала набрал sudo su
, дал ему пароль по умолчанию raspberry
для пользователя pi
, получил приглашение root, набрал там passwd
и изменил свой root
пароль по желанию.