Ваш sda4
раздел недопустим. Тот вывод говорит, что Ваш диск имеет 976773168
секторы, все же sda4
концы в 976784129
. Это не возможно.
Решение состоит в том, чтобы воссоздать тот раздел с корректным размером. Однако это - хитрая часть. Так как это - расширенный раздел, необходимо удалить каждый раздел после него. Ни один из разделов после него на самом деле не расширяется мимо конца диска, таким образом, необходимо быть в безопасности, пока Вы воссоздаете их с тем же самым, запускают и заканчивают местоположения.
Отметьте, это все еще была бы хорошая идея создать резервную копию Ваших данных. Тем более, что вещи не находятся в "нормальном" состоянии прямо сейчас.
Здание на ответе Тердона, вот тот, который, кажется, работает:
filesall=(all files) files=(); for file in "${filesall[@]}"; do [[ $file =~ \.csv$ ]] && files+=("$file"); done
Это действительно не лучший способ сделать это. Почему анализировать массив? Упрощенный подход был бы чем-то вроде:
path=/home/abc/allfiles
filesall=(${path}/*)
files=(${path}/*.csv)
Если вы настаиваете на том, чтобы сделать это своим путем, вам придется сделать что-то вроде:
files=($(for file in "${filesall[@]}"; do [[ $file =~ \.csv$ ]] && echo $file; done))
или
files=($(printf "%s\n" "${filesall[@]}" | grep '\.csv$'))
, но оба вышеуказанного разрыва, если какое-либо из ваших файлов содержит пробел.
(Они могут быть предприняты для работы с пробелами, если вы предшествуете их Сохранить файлы = «$ ifs»; IfS = $ '\ n'
И следуйте за ними с IFS = «$ Saveifs»
, но они все еще ломаются на новую строку.)