Путь к домашней папке windows-юзера находится в windows-переменной USERPOFILE
Эту переменную можно прочитать командой cmd.exe /c 'echo %USERPROFILE%' | tr -d '\r'
Пути Windows можно преобразовать в путь WSL командой wslpath
. Итого, как сохранить путь к домашнему каталогу пользователя в переменную WINPROFILE
WINPROFILE=$(wslpath "$(cmd.exe /c 'echo %USERPROFILE%' | tr -d '\r')")
Затем
find "$WINPROFILE/Pictures" ...
UPDATE 1
Как оказалось, если cmd.exe
вызывать из каталога, который не является каталогом Windows (я свои примеры запускал в каталоге /c/mnt/Users/User
), то cmd.exe
начинает ругаться:
$ cmd.exe /c 'echo %USERPROFILE%'
'\\wsl.localhost\Ubuntu\home\user'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported. Defaulting to Windows directory.
C:\Users\User
Чтобы подавить вывод сообщения об ошибке, то стоит перенаправить stderr
в /dev/null
:
WINPROFILE=$(wslpath "$(cmd.exe /c 'echo %USERPROFILE%' 2>/dev/null | tr -d '\r')")
Update 2
Довольно опасно рассчитывать, что папка Изображения находится в %USERPROFILE%\Pictures
. Она может оказаться где угодно, так как Windows позволяет переносить known-folders внутри файловой системы. Путь к фактическому местоположению этого каталога можно получить из powershell:
powershell.exe -NoProfile -Command "[Environment]::GetFolderPath('MyPictures')"
Сохранить путь к каталогу Изображения текущего пользователя в переменную WINPIC
WINPIC=$(wslpath "$(powershell.exe -NoProfile -Command '[Environment]::GetFolderPath(39)')")
Здесь магическая константа 39
соответствует папке Изображения (aka MyPictures). Вот полный список особых папок, которые поддерживает Environment.GetFolderPath