Назад | Перейти на главную страницу

cygwin find -ls поведение как ls

Я использую cygwin find с -ls (find . -ls) вариант, чтобы получить список файлов с полным путем.

Из-за того, что UTF-16 (в данном случае Windows XP) преобразован в en_UTF-8 под cygwin, специальные символы, такие как акцент, переводятся в 2 восьмеричных экранированных значения (например, à переводится на \303\240. Если я использую прямой ls -lias , строка не переводится и может использоваться с простой кавычкой в ​​любой другой команде (sed, mv, cp, ln, ...).

Вопрос:

Есть ли способ напрямую получить найти возвращает имя файла, как ls?

На самом деле я использую sed для обратного перевода, используя временный файл и printf чтобы получить результат восьмеричного перевода, но он медленный, немного пугающий и не пуленепробиваемый, особенно со следующими mv и rm на основе этой строки.

Я также использую find . -exec ls -lias {} \; работает, кроме того, что время взорвалось из-за fork / shell / ls для каждого файла (15 минут с find -ls, 15 часов с -exec)

Я не знаю, возможно ли то, что ты хочешь сделать, с find, но вы можете ускорить текущее использование find значительно, если вы используете find | xargs вместо того find -exec.