Я думаю, это происходит из-за порядка оценки (отсутствие явного старшинства), например, if
-name '*.mp3' -o -name '*.ogg' -ls
then if -name '*.ogg'
оценивается как false, действие ls
не выполняется. Вы можете получить ожидаемое поведение, сгруппировав выражения OR с помощью круглых скобок - например, if
$ ls tests
file1.mp3 file2.mp3 file3.mp3
Then
$ find tests \( -name '*.mp3' -o -name '*.ogg' \) -print
tests/file3.mp3
tests/file1.mp3
tests/file2.mp3
whereas
$ find tests -name '*.mp3' -o -name '*.ogg' -print
не дает никакого результата. Обратите внимание, что
$ find tests -name '*.mp3' -o -name '*.ogg'
- это особый случай, поскольку он неявно рассматривается как
$ find tests \( -name '*.mp3' -o -name '*.ogg' \) -print
Также обратите внимание, что хорошей практикой является заключение в кавычки или экранирование глобул оболочки в команде find
, чтобы оболочка не расширяла их - см. раздел NON-BUGS
руководства find.
Кому интересно, решения вопроса я не нашел. Однако мне удалось избежать этой проблемы, разместив общий ресурс samba на хосте (с помощью док-контейнера dperson/samba ), а затем в гостевой системе я установил cifs-utils
, а затем добавил это строка на\etc\fstab
:
//192.168.1.7/Shared /media/shared cifs guest,uid=1000,iocharset=utf8,vers=3.0 0 0
Где 192.168.1.7
— IP-адрес хоста, Shared
— имя общего ресурса Samba, а /media/shared
— место, где я установил общий ресурс в гостевой системе.