Pulseaudio и ALSA используют другой способ управления громкостью. ALSA предоставляет все регуляторы громкости аппаратного микшера, в то время как Pulseaudio имеет один регулятор громкости для каждого устройства ввода (и устройства вывода ), который по очереди использует все регуляторы громкости микшера ALSA.
Рекомендуемый способ работы с Pulseaudio — поддерживать громкость устройства ввода на уровне 100 % (, если только ваше оборудование по какой-то причине не слишком чувствительно и вы получаете плохое качество ), и вместо этого контролировать громкость ввода для каждого потока.
zsh
версия (оболочка по умолчанию в терминале Mac):
for file in $(find. -type f -iname "*.txt"); cat "$file" | head -2 | tail -1 >> output.txt
Это предполагает, что все входные текстовые файлы находятся в одном каталоге, и порядок обработки файлов не важен.
bash
версия:
for file in $(find. -type f -iname "*.txt"); do cat $file | head -2 | tail -1; done >> output.txt
РЕДАКТИРОВАТЬ -1:Следуя предложениям Nasir и steeldriver echo
, подстановка команд не требуется. Далее следует awk-версия
for file in $(find. -type f -iname "*.txt"); awk 'NR==2' $file >> output.txt
И, если файлы не имеют расширения txt
, вместо него можно использовать любой шаблон, общий для всех файлов. Предполагая, что все файлы имеют File
в своем имени, версия awk
может быть
for file in $(find. -type f -iname "*File*"); awk 'NR==2' $file >> output.txt
РЕДАКТИРОВАТЬ -2:
Из того, что вы упомянули, ваши FstRslts
и GenDivRslts
являются уникальными идентификаторами файловых групп. Следовательно, вы можете использовать "*FstRslts"
для ваших файлов FstRslts
вместо "*.txt"
. То же дляGenDivRslts
ПРИМЕЧАНИЕ
Я принимаю предложение и урок @steeldrivers и добавляю следующее в качестве одного из ответов (более идиоматично):
find. -type f -iname "*FstRslts" -exec awk 'NR==2' {} \; > output.txt
РЕДАКТИРОВАТЬ -3 find.
-начать поиск из текущего рабочего каталога
type -f
-поиск типа файла
-iname "*FstRslts"
-игнорировать регистр при поиске имен файлов, соответствующих шаблону
-exec
-выполните следующую команду
awk 'NR==2'
-извлечь 2-ю строку каждого файла, найденного в результате выполнения предыдущих команд (соответствующий шаблон)
{} \;
-заполнитель для файлов (совпадающий шаблон )завершение команды
> output.txt
-перенаправить результаты в файл с именем «output.txt»
Сначала мы определяем некоторые полезные переменные оболочки в нашей командной строке:
$ d='[0-9]'
$ pre='TrkNbr_1083n1282_L1n2_PrelimPops'
$ main="$d${d}SubSampPops_Rep$d$d$d"
$ post='GenDivRslts'
$ filename="${pre}_${main}_${post}"
С GNUawk
:
$ find. -type f -name "$filename" |
sort -t_ -nk5.1,5.2 -nk6.4,6.6 |
xargs -r awk 'FNR==2{print;nextfile}' \
> new_text_file;
С GNUsed
:
$ find. -type f -name "$filename" |
sort -t_ -nk5.1,5.2 -nk6.4,6.6 |
xargs -r sed -se '2!d' \
> new_text_file;
Сperl
:
$ find. -type f -name "$filename" |
sort -t_ -nk5.1,5.2 -nk6.4,6.6 |
xargs -r perl -ne 'print,close ARGV if $. == 2' \
> new_text_file;
Сhead/tail
:
$ find. -type f -name "$filename" |
sort -t_ -nk5.1,5.2 -nk6.4,6.6 |
xargs -r \
sh -c '
for f
do
head -n 2 "$f" | tail -n 1
done
' x > new_text_file;
Почему бы просто не
awk 'FNR == 2' *FstRslts > NewFile
? Если командная строка становится слишком длинной, попробуйте сгруппировать входные файлы по их подразделениям или используйте xargs
, чтобы разделить строку.