Найти файл, в то время как другой файл существует в том же каталоге

Существует ловушка с ключевыми словами и/или на find. или, примененными ко всем следующим параметрам, включая действие (-ls в вашем примере). Выражения и без или (или присоединенные с и) оцениваются в порядке чтения с конечной остановкой как false. Не существует неявного ().

Поэтому команда find POD -type f -name *.mp3 -or -name *.ogg -ls означает,

  • поиск (начиная с каталога POD) файлов. --- если файл не найден : STOP
  • иначе (файл найден) проверяем соответствие шаблона *.mp3 --- если шаблон совпадает : STOP! (потому что OR применяется отсюда и только если предыдущая команда не сработала (но только предыдущая команда, а не предыдущие группы команд)

и потому что вы добавили оператор execute (-ls, -exec, -print. ...) в командной строке нет неявной команды -print и поэтому нечего выполнять, если 1) все условия 1) истинны (файл и образец совпали). Если убрать последний -ls, то в конце каждой ветви условий появится неявная -print.

  • else if pattern didn't match искать все (файл/каталог), соответствующие шаблону *.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

Примечание вы должны защитить шаблоны, чтобы избежать оценки шаблона оболочки в текущем каталоге.

1
19.04.2019, 02:19
1 ответ

Дорабатываем ответ GAD3R. Чтобы изменить корневой пароль моего Raspberry Pi, я сначала набрал sudo su, дал ему пароль по умолчанию raspberryдля пользователя pi, получил приглашение root, набрал там passwdи изменил свой rootпароль по желанию.

1
29.04.2020, 13:11

Теги

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