Опоздали на 3 года; но для протокола:
В установщике bsd 11 была ошибка, которая всегда делала /boot отдельным пулом zpool с именем «bootpool». Это было необходимо для зашифрованных корневых дисков (ядро и модули должны были оставаться незашифрованными ); но из-за ошибки установщик делал это независимо от шифрования (, см.:https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=212258)
Это также обсуждается на форумах FreeBSD:https://forums.freebsd.org/threads/42980/и https://forums.freebsd.org/threads/59004/
.
for name in *.txt; do
cut -f 5,10 -- "$name" | sort -k 1,1 >"$name.sort"
done
Это позволит объединить эффект двух начальных циклов, избавившись от использования промежуточных файлов.
Я внес небольшие изменения:
cut
с использованием --
для обозначения конца параметров, если имя файла в $name
начинается с дефиса. Можно также использовать sort -k 1,1 -o "$name.sort"
вместо команды sort
выше, чтобы позволить утилите sort
создать выходной файл, а не оболочку (небольшое отличие ).
Утилита xargs
часто используется вместо цикла:
printf '%s\n' *.txt | xargs -I {} sh -c 'cut -f 5,10 -- "$1" | sort -k 1,1 >"$1.sort"' sh "{}"
... но здесь это только усложняет задачу (приведенная выше команда будет иметь проблемы с обработкой имен файлов, содержащих символы новой строки ).
Ваша команда
cut -f 5,10 $i >$i.txt.out | xargs -I{} sort -k1,1 {} >$i.sort
выполнит cut
и сохранит вывод в$i.txt.out
(с $i
расширенным ). Команда xargs
не получит ввода из-за перенаправления вывода cut
в файл. Если бы вы не перенаправили вывод cut
, xargs
выполнил бы sort
с содержимым файлов в качестве аргументов, а не с именами файлов.Это не то, что вы хотите (, вы хотите передать вывод cut
как данные вsort
).