Я использую 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
.