У меня есть цикл, сравнивающий строки, которые он все еще не выкидывает, если они совпадают. установка много различных типов расширений файлов, только хочу удалить те, которые я не хочу, сохраняя те, которые я хочу. проще путь, не зная, что находится в 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. Кажется, ничего не работает. Он просто удаляет все, независимо от того, что происходит. Я уже знаю, что == равно и != не равно при сравнении строк.