Я использую двоичные файлы Gnuwin32 в среде Windows.
Когда я хочу найти файлы определенного типа, скажем, PDF, я обычно запускаю:
find . -iname '*.pdf' -print
Это прекрасно работает в любой UNIXsystem.
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
Tспасибо тебе