Я не использую id3v2
таким образом, я не могу быть уверен, но существует хороший шанс, что можно объединить все команды в одну:
id3v2 --remove-frame "COMM" --remove-frame "PRIV" -s *.mp3
Для выполнения этой команды в файлах MP3 в подкаталогах также работать
id3v2 --remove-frame "COMM" --remove-frame "PRIV" -s **/*.mp3
**/*.mp3
соответствия .mp3
файлы в текущем каталоге и его подкаталогах рекурсивно. Если Ваша оболочка является zsh, **/
работы из поля. Если Ваша оболочка является ударом ≥4, необходимо работать shopt -s globstar
сначала (вставляет эту строку Ваш ~/.bashrc
). В ksh необходимо работать set -o globstar
(вставьте его ~/.kshrc
). Если у Вас есть другая оболочка, или если эта попытка перестала работать с сообщением, говоря Вам, что командная строка является слишком большой, необходимо будет использовать find
метод ниже (с вариантами, такими как данные в других ответах).
Более сложное, но более гибкий и больше портативного способа действовать на файлы в каталоге и его подкаталогах рекурсивно find
команда:
find . -type f -name '*.mp3' -exec id3v2 --remove-frame "COMM" --remove-frame "PRIV" -s {} +
Команда после -exec
выполняется с {} +
бит в конце, замененном путями к соответствию файлам. Если необходимо выполнить несколько id3v2
команды, используйте несколько -exec
директивы:
find . -type f -name '*.mp3' -exec id3v2 --remove-frame "COMM" {} + -exec id3v2 --remove-frame "PRIV" {} + -exec id3v2 -s {} +
IFS=$'\n'
gzip -dc file.gz | grep -v '^>' | grep -Foe "${tri[*]}" | sort | uniq -c
Но между прочим, AAAC
соответствия оба AAA
и AAC
, но grep -o
произведет только одного из них. Это то, что Вы хотите? Кроме того, сколько случаев AAA
в AAAAAA
? 2 или 4 ([AAA]AAA
, A[AAA]AA
, AA[AAA]A
, AAA[AAA]
)?
Возможно, Вы хотите вместо этого:
gzip -dc file.gz | grep -v '^>' | fold -w3 | grep -Fxe "${tri[*]}" | sort | uniq -c
Это разделяется строки в группах из 3 символов, и рассчитайте, случаи как сплошные линии (нашел бы 0 возникновения AAA
в ACAAATTCG
(как это ACA AAT TCG
)).
Или с другой стороны:
gzip -dc file.gz | awk '
BEGIN{n=ARGC;ARGC=0}
!/^>/ {l = length - 2; for (i = 1; i <= l; i++) a[substr($0,i,3)]++}
END{for (i=1;i<n;i++) printf "%s: %d\n", ARGV[i], a[ARGV[i]]}' "${tri[@]}"
(нашел бы 4 случаев AAA
в AAAAAA
).