Я хочу сделать автоматическое создание папки на основе регулярности видеофайлов MTS текущего мошенника.
Я мог бы получить некоторую нужную информацию, объявив -a CreateArray10digits = $ (stat -f "% B" * | cut-c1-10) объявить -a ModifiedArray10digits = $ (stat -f "% m" * | cut -c1-10)
файл с ошибками имеет разность 0 с или 1 с.
так что, наконец, обрежьте-1 папка: 00000.MTS 00001.MTS 00002.MTS 00003.MTS 00004.MTS 00005.MTS 00006.MTS 00007.MTS 00008.MTS 00009.MTS 00010.MTS 00011.MTS
папка clip-2: 00012.MTS
папка clip-3: 00013.MTS 00014.MTS
папка clip-4: 00015.MTS
клип-5: 00016.MTS
если в каждом файле MTS в текущей папке нет регулярности, просто сделайте клип-1 в клип-16 и перейдите в каждую папку ... вот и все
, что будет лучшим сценарием для bashоболочка на маке?
================ здесь мой пробный код ==============
# сначала получитесписок файлов в виде массива на основе времени создания даты (в секундах) для текущего каталога для файлов MTS
declare -a CreateArray10digits=$(stat -f "%B" * | cut -c1-10)
# создать новый массив для CreateArray10digits
indexOfcreateArray10digits=($CreateArray10digits)
# секунд, получить список файлов в виде массива на основе времени изменения даты для текущего каталога для файлов .MTS
declare -a ModifiedArray10digits=$(stat -f "%m" * | cut -c1-10)
# создать новый массив для ModifiedArray10digits
indexOfmodifiedArray10digits=($ModifiedArray10digits)
# и получить длину массива для CreateArray10digits
indexOfcreateArray10digitsLenth=${#indexOfcreateArray10digits[*]}
indexOfmodifiedArray10digitsLenth = $ {# indexOfmodifiedArray10digits [*]}
# создать новый массив для списка имен файлов текущего каталога
declare -a ArrayFullFileNameWithExtension=$(stat -f "%N" *)
indexOfModifiedArrayFullFileNameWithExtension=($ArrayFullFileNameWithExtension)
declare -a ArrayFullFileNameWithoutExtension=$(stat -f "%N" * | cut -c1-5 )
indexOfModifiedArrayFullFileNameWithoutExtension=($ArrayFullFileNameWithoutExtension)
наконец, я сделал несколько массивов, и эти массивы, наконец, имеют одинаковую длину
мой код ниже
CNT=$((${#indexOfcreateArray10digits[*]}-1)) # 17-1 = 16
last_file_index=$CNT
current_dir=1
make_clip_dir $current_dir
move_clip 0 $current_dir # what mean 0 ? 00000.MTS ?
# when not junked then will be make new folder by for - loop
function make_clip_dir {
mkdir "clip-$1"
}
# is this move_clip function right ?
function move_clip {
mv ${indexOfModifiedArrayFullFileNameWithExtension[$1]} "./clip-$2"
}
# please check below code is right or not .. very i am confused :-)
function connected_junks {
if [[ $((${indexOfcreateArray10digits[$2]} - ${indexOfmodifiedArray10digits[$1]})) -eq 0 ]];
then
#echo "$variable1"
#echo "$variable2"
echo " true !!"
elif [[ $((${indexOfcreateArray10digits[$2]} - ${indexOfmodifiedArray10digits[$1]})) -eq 1 ]];
then
echo " true !!"
else
echo " false!!!!!!!!!!!!!!!!!!!!! "
fi
}
echo "difference:"$((${indexOfcreateArray10digits[14]} - ${indexOfmodifiedArray10digits[13]}))
connected_junks 14 13
echo "1:"${indexOfcreateArray10digits[14]}
echo "0:"${indexOfmodifiedArray10digits[13]}
=============== results
difference:1
false!!!!!!!!!!!!!!!!!!!!! # i have no idea why this is false
1:1524058477
0:1524058395
============================================================
# for loop statement
for i in seq 1 $last_file_index
do
if [[ ! connected_junks $((i-1)) $i ]];
then
current_dir=$((current_dir+1))
make_clip_dir $current_dir
fi
move_clip $i $current_dir
done
# but won't works
# only clip-1 folder was created and 00000.MTS moved into this folder
#
########################### ошибка результатов
/twoArrayCompare.sh: line 170: conditional binary operator expected
/twoArrayCompare.sh: line 170: syntax error near `$((i-1))'
/twoArrayCompare.sh: line 170: ` if [[ connected_junks $((i-1)) $i ]];