find -type d и ls возвращают разные результаты в одном и том же каталоге

Я пытаюсь придумать причину, по которой find будет возвращать частичные результаты в Ubuntu 16.04. У меня есть монтирование диска Google (используя plexdrive), расположенное в /home/user/media

Когда используешь

find $HOME/media -type d

Возвращается 16 результатов. Когда используешь

ls -d $HOME/media/*/

Возвращается 186 результатов. Все папки доступны для просмотра через общие ресурсы sftp и samba, все права доступа к соответствующим каталогам равны 775. Содержимое в каталоге мультимедиа отформатировано как

a/a.ext
b/b.ext
c/c.ext

Кто-нибудь видел такое поведение раньше или знает, как найти, чтобы вернуть полные результаты?


person G4L1F3    schedule 31.05.2017    source источник
comment
ls будет отображать все файлы, а не только папки...   -  person Sundeep    schedule 01.06.2017
comment
Извините, ls -d $HOME/media/* - это фактическая команда. Я отредактировал исходный пост.   -  person G4L1F3    schedule 03.06.2017
comment
В дополнение к этому, find отлично работает в других местах моей системы, поэтому я думаю, что это может быть скорее ошибка в plexdrive, чем что-либо еще.   -  person G4L1F3    schedule 03.06.2017
comment
ls -d по-прежнему будет отображать как файлы, так и папки...   -  person Sundeep    schedule 03.06.2017
comment
Этого нет в моей системе, на сервере Ubuntu 16.04, и -d — это флаг только для каталогов, поэтому я не уверен, почему вы думаете, что он будет показывать файлы. В любом случае, это не имеет значения. Цель состоит в том, чтобы выяснить, почему find не возвращает полные результаты.   -  person G4L1F3    schedule 05.06.2017
comment
снова я настаиваю, что ls -d также покажет файлы.. вы можете легко проверить это... cd в любой каталог с файлами и каталогами... а затем выполните ls * и ls -d *... что делает -d, если каталог найден при расширении глобус, он покажет только имя каталога вместо отображения содержимого этих каталогов... если файл будет найден при использовании ls -d, он также будет отображаться... find -type d явно не будет показывать файлы   -  person Sundeep    schedule 05.06.2017
comment
Хотя это может быть правдой, в каталоге, который я сканирую, нет файлов, только другие подкаталоги, содержащие файлы, поэтому флаги являются спорным вопросом. Также можно добавить косую черту в конце, чтобы только каталоги соответствовали ls -d */.   -  person G4L1F3    schedule 05.06.2017
comment
если ls -d $HOME/media/*/ и ls -d $HOME/media/* возвращают одинаковое количество результатов, то все каталоги внутри $HOME/media пусты?   -  person Sundeep    schedule 06.06.2017
comment
Флаг -d запрещает ls отображать содержимое каталогов. Единственными включенными файлами будут те, которые существуют в каталоге, указанном в команде. В $HOME/media/ нет файлов, только каталоги. ls -d $HOME/media/*/ и ls -d $HOME/media/* действительно возвращают одинаковое количество результатов, и каждый отдельный подкаталог имеет содержимое.   -  person G4L1F3    schedule 06.06.2017
comment
о, ладно, понял .. Я не рассматривал такую ​​​​возможность ... в любом случае рад, что вы решили проблему самостоятельно :)   -  person Sundeep    schedule 06.06.2017
comment
Да, я тоже рад, что это решено; и, надеюсь, это поможет кому-то в будущем. Спасибо за внимание и за более подробное объяснение ls.   -  person G4L1F3    schedule 06.06.2017


Ответы (1)


Это происходит, когда find просматривает каталог с символическими ссылками. Используйте флаг -L, чтобы увидеть правильную структуру папок. find -L $HOME/media -type d

person G4L1F3    schedule 06.06.2017