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, ...).

Вопрос:

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

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

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

0
задан 19 November 2014 в 11:02
1 ответ

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

2
ответ дан 4 December 2019 в 13:54

Теги

Похожие вопросы