我在Windows环境中使用Gnuwin32二进制文件.
当我想要找到某种类型的文件时,我们来说说PDF,我通常运行:
当我想要找到某种类型的文件时,我们来说说PDF,我通常运行:
find . -iname '*.pdf' -print
这可以在任何UNIX系统上完美运行.
find.exe . -iname "*.pdf" -print
但是在Windows下,用双引号代替单引号,只能在当前目录中没有pdf文件的情况下工作,否则*将被扩展.
更糟糕的是,当当前目录中只有一个PDF文件时,它会扩展,没有语法错误,你会得到错误的结果.
我已经试图逃脱*与插入符号,反斜杠,一个明星本身,放在双引号:没有什么对我有用.
实例:
好的,这里是我的所有文件:
C:\tmp>find . -type f ./a/1.pdf ./a/2.pdf ./a/aa/1.pdf ./b/1.pdf ./b/bb/1.pdf ./b/bb/2.pdf
良好的行为,通配符没有扩展
C:\tmp>find . -iname "*.pdf" ./a/1.pdf ./a/2.pdf ./a/aa/1.pdf ./b/1.pdf ./b/bb/1.pdf ./b/bb/2.pdf C:\tmp>cd a
小心,不一致的行为,通配符被扩展:
C:\tmp\a>find . -iname "*.pdf" find: paths must precede expression Usage: find [-H] [-L] [-P] [path...] [expression] C:tmp\a>cd ..\b
小心,通配符被扩展:
C:\tmp\b>find . -iname "*.pdf" ./1.pdf ./bb/1.pdf
谢谢
我发现自己是我的问题的解决方案.
原文链接:https://www.f2er.com/windows/371519.html> Gnuwin32的find.exe在最近的Windows版本(Vista,Seven)上不起作用,因为它扩展了只匹配当前目录的内容的通配符.
>同样的,UnxUtils的一个旧版本的find.exe遇到了同样的错误.
> The latest find.exe
from UnxUtils正在工作.