Не было ясно, как 'свободный' Вы хотели, чтобы этот инструмент был. Межкартопостроитель делает это:
Но это не свободно (но действительно работает на 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/
Необходимо смочь сделать это в одной строке с чем-то вроде этого:
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...
Так как Вы кажетесь, что Вы немного плохо знакомы с этим, протестом: Как всегда со сложными командами оболочки, выполняет их осторожно и пытаются в тестовом каталоге сначала, удостовериться, что Вы понимаете то, что собирается произойти. С великой державой прибывает большая ответственность!
Быстрым решением является цикл через все 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
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 {} +