id3v2, используемый рекурсивно в командной строке?

Не было ясно, как 'свободный' Вы хотели, чтобы этот инструмент был. Межкартопостроитель делает это:

http://www.intermapper.com/

Но это не свободно (но действительно работает на UNIX).

Насколько открытый исходный код идет, Сетевая Погодная карта и Weathermap4rrd могут сделать это. Вот является пример изображением Weathermap4rrd:

http://weathermap4rrd.tropicalex.net/images/w4_example.png

Больше информации о Weathermap4rrd: http://weathermap4rrd.tropicalex.net/whatisw4rrd.php

Weathermap: http://netmon.grnet.gr/weathermap/

Я создал использование дисплеев OpenNMS и Nagios для сбора данных для этого. Что-либо, что может произвести к rrds, может использоваться в качестве исходных данных. Некоторые сборочные инструменты:

OpenNMS: кактусы http://www.opennms.org/: http://www.cacti.net/

5
13.09.2012, 01:15
3 ответа

Необходимо смочь сделать это в одной строке с чем-то вроде этого:

find . -name '*.mp3' -execdir id3v2 --remove-frame "COMM" '{}' \; -execdir id3v2 --remove-frame "PRIV" '{}' \; -execdir id3v2 -s '{}' \;

{} заменены текущее соответствие имени файла. Помещение их в кавычках ('') защищает их от оболочки. -execdir выполнения, пока это не поражает точку с запятой, но точку с запятой (;) потребности, сбегающие из оболочки, следовательно использование обратной косой черты (\). Это все описано в find страница справочника:

-exec command ;
      Execute  command;  true  if 0 status is returned.  All following
      arguments to find are taken to be arguments to the command until
      an  argument  consisting of `;' is encountered.  The string `{}'
      is replaced by the current file name being processed  everywhere
      it occurs in the arguments to the command, not just in arguments
      where it is alone, as in some versions of find. 
-execdir command {} +
      Like -exec, but the specified command is run from the  subdirec‐
      tory  containing  the  matched  file,  which is not normally the
      directory in which you started find.  This a  much  more  secure
      method  for invoking commands...

Так как Вы кажетесь, что Вы немного плохо знакомы с этим, протестом: Как всегда со сложными командами оболочки, выполняет их осторожно и пытаются в тестовом каталоге сначала, удостовериться, что Вы понимаете то, что собирается произойти. С великой державой прибывает большая ответственность!

5
27.01.2020, 20:37
  • 1
    Я мог обеспокоиться, Вы для объяснения {} и \управляете в вышеупомянутом? Это выглядит потрясающим, попробует это, когда это увеличивает концы... –  chow 12.09.2012, 06:19
  • 2
    , Находящих, после нескольких выполнений, что это работает намного лучше на меня - благодарит ire_and_curses. –  chow 12.09.2012, 07:39

Быстрым решением является цикл через все sub папки, и обработайте все файлы в нем:

find . -type d | while IFS= read -r d; do
  cd "${d}"
  id3v2 --remove-frame "COMM" *.mp3
  id3v2 --remove-frame "PRIV" *.mp3
  id3v2 -s *.mp3
  cd -
done
2
27.01.2020, 20:37
  • 1
    Это, мой хороший друг, работало как очарование. –  chow 12.09.2012, 06:15
  • 2
    , Почему использование cd? Почему нет id3v2 … "$d/"*.mp3? –  Gilles 'SO- stop being evil' 13.09.2012, 03:22

Я не использую 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 {} +
0
27.01.2020, 20:37

Теги

Похожие вопросы