Локаль Unix не имеет никакого значения для программ, работающих в ВИНЕ. Необходимо настроить winodws в вине для русского языка.
Второй пример:
find . -name '*.txt' -print0 | xargs -0 cat > out.txt
Абсолютно законно и воссоздаст файл, out.txt
каждый раз это выполняется, в то время как первое конкатенирует к out.txt
если это работает. Но обе команды делают по существу то же самое.
То, что путает проблему, xargs -0 cat
. Люди думают что перенаправление к out.txt
часть той команды, когда это не. Перенаправление происходит после xargs -o cat
взял вход на пути STDIN, и затем cat'ing, которые производят как единый поток к STDOUT. xargs
оптимизирует cat'ing файлов не их вывод.
Вот является пример такими шоу, что я говорю. Если мы вставляем a pv -l
промежуточный xargs -0 cat
и вывод в файл out.txt
мы видим, сколько записала кошка строки.
Для показа этого, я создал каталог с 10 000 файлов в нем.
for i in `seq -w 1 10000`;do echo "contents of file$i.txt" > file$i.txt;done
Каждый файл выглядит подобным этому:
$ more file00001.txt
contents of file00001.txt
Вывод от pv
:
$ find . -name '*.txt' -print0 | xargs -0 cat | pv -l > singlefile.rpt
10k 0:00:00 [31.1k/s] [ <=>
Как мы видим, 10k строки были выписаны к моему singlefile.rpt
файл. Если xargs
передавали нас блоки вывода, затем мы будем видеть, что сокращением количества строк, которые представлялись pv
.
Какова цель наличия этих двух операторов затем?
Это - легкое: Поскольку существуют различные варианты использования. Иногда полезно усечь конечный файл для калибровки 0 первых, иногда (например, файлы журнала), имеет больше смысла добавлять данные в файл.
В этом случае не имеет никакого смысла добавлять. Вы хотите файл с точно содержанием файлов, которые Вы выбрали и не "файл с любыми данными вначале и содержанием выбранных файлов в конце".
Я пошел бы со вторым. Перенаправление stdout поймано ударом, когда Вы совершаете нападки, входят, таким образом, это не похоже на Вас, создают новое перенаправление для каждой строки find/xargs (который, возможно, был их взглядами). Если out.txt
не существует они должны быть идентичными, если это уже имеет данные, затем второй, по крайней мере, сбрасывает файл к известному содержанию (то есть, никакому содержанию).