我使用带有 -ls () 选项的 cygwin findfind . -ls
来获取具有完整路径的文件列表。
由于 UTF-16(在本例中为 Windows XP)在 cygwin 下转换为 en_UTF-8,特殊字符(如重音符)被转换为 2 个八进制转义值(例如,à
在 中转换)\303\240
。如果我使用直接ls -lias
命令,则字符串不会被转换,并且可以在其他命令(sed、mv、cp、ln 等)中与简单的引号一起使用。
问题:
有没有办法直接寻找像 ls 一样返回文件名?
实际上,我使用 sed 使用临时文件进行反向翻译并获得printf
八进制翻译的结果,但是它很慢,有点可怕并且不是万无一失的,特别是对于基于此字符串的后续 mv 和 rm。
我还使用了一个find . -exec ls -lias {} \;
工作 execpt,由于每个文件上的 fork/shell/ls,时间爆炸式增长(使用 find -ls 需要 15 分钟,使用 -exec 需要 15 小时)
答案1
我不知道您是否可以使用 来执行此操作,但如果您使用而不是 ,find
则可以大大加快当前的使用速度。find
find | xargs
find -exec