LINUX.ORG.RU

bash. Kak проверить наличие в каталоге определенных файлов.


0

0

Требуется в скрипте проверять наличие в каталоге определенных файлов. Т.е. если в каталоге появились например файлы *.mp3, то перекодировать их в ogg и перемещать в каталог с музыкой. Если файлов нет, то просто завершать работу. Как более просто решить эту задачу.

В bash я не силен - натолкните на путь истинный. Я предполагаю засунуть в cron скрипт который будет периодически выполнять эту работу.

p.s. сейчас сделано так

for name in *.mp3

do mp32ogg --delete $name

done

Как еще это можно сделать? интересуют разные способы......

anonymous

if [ -f *.mp3 ] ; 
then 
  echo yes; 
else 
  echo no; 
fi

dGhost ★★★
()

А зачем что-то усложнять? Единственное замечание - mp32ogg --delete "$name"

Чтобы файлы с пробелами корректно перекодировались.

Nao ★★★★★
()
Ответ на: комментарий от Nao

Nao, dGhost

Спасибо. пробовал вчера также конструкцию [ -f /path/*.mp3 ] но скорее всего под вечер накосячил, ибо у меня не работало так как я хотел.

по поводу замечания - "$name" - спасибо - учту.

anonymous
()

find /where/to -type f -name "*.mp3" -exec mp32ogg --delete "{}" \;

bakagaijin
()

а какой смысл перекодировать mp3 в ogg? греться у компа холодними зимними вечерами?

cobold ★★★★★
()
Ответ на: комментарий от cobold

>а какой смысл перекодировать mp3 в ogg? греться у компа холодними зимними вечерами?

За _свободу_ до конца!

Demon37 ★★★★
()
Ответ на: комментарий от cobold

смысл сейчас объясню. Перекодированные файлы добавляются в плейлист ices и далее вещание в локальную сеть через icecast. Поэтому ухудшение качества меня не сильно беспокоит.

Спасибо ребята.

anonymous
()
Ответ на: комментарий от anonymous

Так..... хочу внести некоторые усовершенствования в скрипт. Он у меня сейчас запускается по cron-у один раз в 15 минут, так как машина очень слабая P-MMX, перекодирование идет медленно, и если закинуть в каталог сразу много файлов я предполагаю возникнет следующая ситуация: файлы еще до конца не перекодировались и не удалились из каталога, а скрипт запущен еще раз, что приведет в конечном счете к зависону.

Хочу ввести еще одну проверку. Т.е. мне надо определить закончил ли работу скрипт (идет ли в данный момент перекодирование mp3 в ogg), и в случае если перекодировка еще не закончена, завершить работу скрипта.

Каким образом это организовать? Наверное можно анализировать

ps -A | grep mp32ogg

Как сделать такую проверку? Если можно - разные варианты, т.к. как я уже писал выше в bash я не особенно силен и хочу посмотреть различные пути решения.......

anonymous
()
Ответ на: комментарий от anonymous

UPD

уже разобрался....

TEST=`ps ax | grep mp32ogg | grep -v grep | wc -l`

if [ $TEST -eq 0 ]

then

bla bla bla

else

bla bla bla

fi

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.