@skyspirit

Как верно написать условие bash?

ExtensionVideo=“$('.*\.\(mkv\|m4v\|mp4\|ts\|avi\)' )”
ExtensionMusic=“$('.*\.\(flac\|m4a\|ape\)' )”
ExtensionCue= “$('.*\.\(cue\)' )”
Downloads=“/mnt/d/Downloads”

x="$IFS";IFS=$'\n';for WhatFile in $(find “$Downloads” -regex “$ExtensionVideo”  -о “$ExtensionMusic”  -o “$ExtensionCue” | sort -r  );
do

IFS="$x"

if [[ “$Extension” != какому-то “$Extension??” ]];
then 

если равно ExtensionVideo, то что-то делаем

если равно ExtensionMusic, то что-то делаем

если равно ExtensionCue, то что-то делаем

else 

echo “Nothing to do “
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
gedev
@gedev
сисадмин-энтузиаст
Переусложняете.
#!/bin/sh
dir=/mnt/d/Downloads
find "$dir" -type f -regextype egrep -regex '.*\.(mkv|m4v|mp4|ts|avi)' -print0 | sort -zr | xargs -0 -I {} echo {}
find "$dir" -type f -regextype egrep -regex '.*\.(flac|m4a|ape)' -print0 | sort -zr | xargs -0 -I {} echo {}
find "$dir" -type f -regextype egrep -regex '.*\.cue' -print0 | sort -zr | xargs -0 -I {} echo {}
Вместо echo вставьте свою команду. Вместо парных фигурных скобок подставляется имя файла. Если над файлами надо делать сложные действия, то можно сделать по аналогии:
#!/bin/sh
dir=/mnt/d/Downloads
videos="$(find "$dir" -type f -regextype egrep -regex '.*\.(mkv|m4v|mp4|ts|avi)' | sort -r)"
if [ -n "$videos" ]; then
    x=$IFS; IFS=$'\n';
    for video in "$videos"; do
        # делаем что-то
        echo "$video"
    done
    IFS="$x"
fi
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
paran0id
@paran0id
Умный, но ленивый
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы