if statement not working properly

У меня есть цикл, сравнивающий строки, которые он все еще не выкидывает, если они совпадают. установка много различных типов расширений файлов, только хочу удалить те, которые я не хочу, сохраняя те, которые я хочу. проще путь, не зная, что находится в dir, сказать ему, что я хочу сохранить, тогда пусть он просто удалит остальное. это не работает он по-прежнему удаляет все в пределах dir и поддиректории. Вот как это в основном настроено в скрипте с двумя циклами в нем сейчас,

find "$working_dir" -type f -name "*.*" | while [ $xf  -lt $numberToConvert ] ; 
do read FILENAME;


echo "before loop"
echo "path1 is -> "${path1}""
echo "Ext1 is -> "$ext1""

#Checks each movie file to see if it is just a not needed
sample    of the move to regain file space by deleting it



   j=$FILENAME
   xpath=${j%/*} 
   xbase=${j##*/}
   xfext=${xbase##*.}
   xpref=${xbase%.*}
   path1=${xpath}
   pref1=${xpref}
   ext1=${xfext}

for file in "${path1}" ; do 

echo "in for loop ext1 is -> "$ext1"" 

  if [[ "$ext1" != 'flac' || "$ext1" != 'mp3'  ]]; then

    echo "in loop if statement ext is -> "$ext1""
    echo "Removing "$FILENAME""

    removeme="$FILENAME"
    rm -v "$removeme"

  fi
done

if [[ "${ext1}" == 'mp3' || "${ext1}" == 'flac' ]] ; then 
# other code to do stuff to mp3 and flac files here within the outter loop

 fi
 #outter loop done statement
 done 

выход термина:

before loop
path1 is -> /media/data/temp1/Joe Jackson - The Ultimate Collection/CD2
Ext1 is -> mp3

in for loop ext1 is -> mp3

in loop if statement ext is -> mp3
Removing /media/data/temp1/Joe Jackson - The Ultimate Collection/CD2/07 Joe Jackson - Be My Number Two.mp3
removed ‘/media/data/temp1/Joe Jackson - The Ultimate Collection/CD2/07 Joe Jackson - Be My Number Two.mp3’

Extension of before into first if statement foobar

Total Files Left are 41

второй оператор if работает, он пропускал только mp3 и flac, и работал. Я просто решил попробовать избавиться от остальных файлов, которые не mp3 или flac в каталогах, и, я попробовал все варианты, которые я могу придумать с кавычками '$var' "$var" и скобками "${var}" вокруг имени переменной и [ ] и [[ ]] в операторе if. Кажется, ничего не работает. Он просто удаляет все, независимо от того, что происходит. Я уже знаю, что == равно и != не равно при сравнении строк.

http://tldp.org/LDP/abs/html/comparison-ops.html

0
20.11.2015, 19:43
0 ответов

Теги

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