Какой командой операционной системы можно удалить все файлы имена которых начинаются на букву x

Обновлено: 02.07.2024

Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

Удаление всех файлов и папок имеющих в названии определеное слово(или набор символов)

man rm мне ничего не дал..(( нашел что rf -- *название* (без звездочек) удаляет файл, имя которого начинается с *название*, rmdir так же удаляет только указанные.
НО мне нужна команда, которая удаляет все файлы и каталоги содержащие в названии заданные мной буквы, цифры и символы.
например:
locate mirage выдает
По одному эти файлы,каталоги и директории удалять надоедает.
Есть ли возможность избавится от лишней работы?

проверил - файлы и т.д. удалены,
НО locate mirage по прежнему находит эти файлы. гм, почему она врет?)

ВСЕМ СПАСИБО!
З.Ы.: решил -

НО locate mirage по прежнему находит эти файлы. гм, почему она врет?)

дык оно по индексу ищет. Индекс обычно создаётся каждый день в 4 утра.

А удаляю я так find . -name "*mirage*" -delete

Скоро придёт
Осень

НО locate mirage по прежнему находит эти файлы. гм, почему она врет?)
Потому что locate ищет не напрямую по файловой системе, а по собственным базам данных. Эти базы по умолчанию обновляются раз в сутки путем запуска updatedb. если у вас будет 100500 мильонов файлов *mirage*, то rm вылетит с ошибкой.
А папки test_mirage и mirage_copy останутся, если в них будут файлы. Либо, если нужны только файлы, я бы еще указывал -type f , чтобы совсем чистенько без ошибок работало (: UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
злой вы. Попробуйте удалить Documents из маздая - удалится куча всего нужного, кроме самой Documents\ and\ Settings :(

Скоро придёт
Осень

злой вы. Попробуйте удалить Documents из маздая - удалится куча всего нужного, кроме самой Documents\ and\ Settings если у вас будет 100500 мильонов файлов *mirage*, то rm вылетит с ошибкой. А папки test_mirage и mirage_copy останутся, если в них будут файлы.

ИМХО не следует удалять важные файлы, если имя каталога попадает под шаблон. А если попадает и то, и другое, то команда отлично удаляет. Только надо обходить в другом порядке (find -depth), впрочем, это верно для любого удаления (для опции delete обратный обход включается автоматически).


не только. У меня 63 файла в системе, которые попадают под этот шаблон. Очень легко ошибиться :(

Скоро придёт
Осень

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
а у меня сейчас работает. ИЧСХ правильно.
а в slacky 10.2 просто откусывала молча хвост.

а я сам не в курсе, надо-ли удалять файл, если под шаблон попадает каталог?

Скоро придёт
Осень

А папки test_mirage и mirage_copy останутся, если в них будут файлы.
ИМХО не следует удалять важные файлы, если имя каталога попадает под шаблон. А если попадает и то, и другое, то команда отлично удаляет. Только надо обходить в другом порядке (find -depth), впрочем, это верно для любого удаления (для опции delete обратный обход включается автоматически).

Специально продемонстрирую (установил и удалил заново) вот что выводит:

по-моему есть разница. ( locate -e показывает записи которые относятся к существующим на момент поиска файлам(если я правильно перевел))
по-моему есть разница. ( locate -e показывает записи которые относятся к существующим на момент поиска файлам(если я правильно перевел))

неправильно.
find ищет в тек. каталоге
slocate по всему диску
slocate -e dir по директориям, в которых есть dir.

Есть 2 разницы между find и slocate
1) slocate находит файлы которые ещё есть в бд, и не находит которых ещё нет в бд.
2) slocate не показывает закрытые каталоги, а find туда не пускают. Последняя плачет по этому поводу.

А команду locate давно уже выпилили.


ну она и ищет в тек. каталоге. Смените точку на слеш
find / -iname "*mirage*"

Скоро придёт
Осень


Да вот ни фига. Есть 3 реализации утилиты locate: gnu locate, slocate и mlocate (на самом деле есть ещё rlocate и куча других, но они малоизвестны). Первую реализацию давно отовсюду выпилили, вторую выпиливают, а третья приходит на место второй. Но при этом все три - это "команда locate".

Скоро придёт
Осень

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code. гм. как же тогда искать в закрытых каталогах? ведь большинство "ненужных ненужностей оставшихся после удаленного пакета" лежат именно там.

иначе - зачем их закрывать было?! а то, что "после удаления" осталось - это либо бекап для отката, либо мусор, который сам удаляется.

Скоро придёт
Осень

эээ, вы об чём?
$ locate radiusd.conf | grep ^/etc | wc -l
0
$ sudo locate radiusd.conf | grep ^/etc | wc -l
1 Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог иначе - зачем их закрывать было?! а то, что "после удаления" осталось - это либо бекап для отката, либо мусор, который сам удаляется. гм, а вот с этим согласитесь?
Код
sudo find / -iname "*mirage*" -type fd | xargs rm -ir dirname

1) -type fd как-то странно.
2) порядок неверный: вы должны сначала удалить файлы внутри директорий, а потом директории, если там нет файлов. Т.е. в порядке обратном созданию. У вас что-то непонятное - вы удаляете сначала директорию, потом пытаетесь удалить файлы в ней. Нужен ключ -depth
3) find умеет сама удалять ключом -delete. Подтверждение можно запросить опцией -ok.
4) сам подход неверный! Надо найти список файлов (создать его, если нет), а потом удалять по этому списку. А не по имени - ибо имя может случайно совпасть. Кроме того, пакет XYZ вправе создать файл ABC. Если уж так всё плохо в вашем дистрибутиве - ищите по дате, а не по имени. (ясно, что это тоже ненадёжно). А лучше поставьте слаку, там в /var/log/package/ лежат списки файлов для каждого пакета. (правда, никто об этом не знает, и думает, что там помойка. Ан нет. )

Скоро придёт
Осень


не верю. У вас-же не маздай. Может вы как-то неправильно ставите?

Скоро придёт
Осень

гм, а вот с этим согласитесь?
Код
sudo find / -iname "*mirage*" -type fd | xargs rm -ir dirname

1) -type fd как-то странно.
2) порядок неверный: вы должны сначала удалить файлы внутри директорий, а потом директории, если там нет файлов. Т.е. в порядке обратном созданию. У вас что-то непонятное - вы удаляете сначала директорию, потом пытаетесь удалить файлы в ней. Нужен ключ -depth
3) find умеет сама удалять ключом -delete. Подтверждение можно запросить опцией -ok.
4) сам подход неверный! Надо найти список файлов (создать его, если нет), а потом удалять по этому списку. А не по имени - ибо имя может случайно совпасть. Кроме того, пакет XYZ вправе создать файл ABC. Если уж так всё плохо в вашем дистрибутиве - ищите по дате, а не по имени. (ясно, что это тоже ненадёжно). А лучше поставьте слаку, там в /var/log/package/ лежат списки файлов для каждого пакета. (правда, никто об этом не знает, и думает, что там помойка. Ан нет. )

Команды DOS для работы с каталогами

Смена текущего каталога

Формат команды:
cd [дисковод:][путь]

Параметры:
/p - поэкранный вывод;
/w - вывод в широком формате;
/s - оглавление указанного в команде каталога и всех его подкаталогов;
/b - только имена файлов без заголовочных и итоговых сведений;
/a атрибут - сведения о файлах, имеющих указанные атрибуты.


Удаление пустого каталога

Удаление каталога со всем содержимым

Формат команды:
deltree [/y] имя-файла-или-каталога

Команда deltree может удалять как каталоги, так и файлы. В имени файла-или-каталога можно использовать символы * и ?.
Примеры:
deltree temp - удалить каталог или файл с именем temp из текущего каталога;
deltree /y d* - удалить из текущего каталога все каталоги и файлы, имя которых начинается на d, не запрашивая подтверждение.

Установка списка каталогов для поиска выполняемых программ

Команды DOS для работы с файлами

Формат команды:
copy con имя-файла

Ctrl+Z, F6 - признак конца файла.
Enter - признак конца строки.
Примеры:
copy con work.txt - создать в текущем каталоге текстовый файл work.txt.


Формат команды:
del имя-файла
Примеры:
del *.txt - удалить все файлы с расширением .txt из текущего каталога;
del name.doc - удалить из текущего каталога файл с именем name.doc.

Формат команды:
ren имя-файла1 имя-файла2

В параметре имя-файла1 можно указывать дисковод и путь, в имя-файла2 - нет.
Команда ren не обрабатывает скрытые файлы.
Примеры:
ren xxx.doc xxx.txt - переименовать файл xxx.doc текущего каталога в xxx.txt;
ren a:*.txt *.doc - переименовать все файлы текущего каталога на диске а: с расширением .txt в файлы с такими же именами и расширениями .doc.

Формат команды:
copy имя-файла1 имя-файла2
copy имя файла1 [имя-каталога2]

Использование устройств:
copy t1.txt prn - копирование файла t1.txt на принтер;
copy t1.txt con - копирование файла t1.txt на экран монитора.

Формат команды:
copy имя-файла [+имя-файла]…[имя файла]

Если имя исходного файла (или одного из файлов) совпадает с именем создаваемого командой copy файла, то существующий файл замещается. Например, если файл all.doc уже существует, то команда copy *.doc all.doc будет ошибочной, т.к. файл all.doc будет уничтожена в начале копирования.
Примеры:
copy .lst+*.ref *.prn - к каждому файлу текущего каталога с расширением lst добавить файл с тем же именем и расширением ref, результат записывается в файл с тем же именем и расширением prn;
copy f1.doc+f2.doc - объединить файлы f1.doc и f2.doc, содержимое объединенного файла записывается в файл f1.doc;
copy *.txt all.prn - содержимое всех файлов с расширением txt записывается в файл all.prn.

Формат команды:
move [/y] имя-файла имя-каталога
move [/y] имя-файла [дисковод:][путь]новое-имя-файла

Формат команды:
fc [параметры] имя-файла имя-файла [имя-файла-протокола]

Если имя файла-протокола не задано, сведения о сравнении выводятся на экран.

Параметры:
/l - построчное сравнение. Если программа обнаруживает различия в файлах, она пытается найти после точки рассогласования места, начиная с которых файлы снова становятся одинаковыми. На выходе - различающиеся строки;
/b - побайтовое сравнение. После обнаружения различия файлов сравнение прекращается.

Параметры построчного сравнения:
/c - игнорировать различия между строчными и прописными буквами;
/n - вывод номеров строк;
/число - сколько строк файлов должно совпадать, чтобы файлы считались снова согласованными. По умолчанию 2 строки;
/lbчисло - размер внутреннего буфера для нахождения соответствий в файлах после рассогласования. По умолчанию 100 строк.
Примеры:
fc doclad.doc doclad1.doc > diff - сравнить файлы, отчет поместить в файл diff.


Формат команды:
type имя-файла
Примеры:
type t1.doc - вывод на экран файла type t1.doc из текущего каталога.

Формат команды:
xcopy имя-файла-или-каталога [имя-файла-или-каталога]…[параметры]

Параметры:
/s - копирование файлов из указанных каталогов и всех их подкаталогов. Файлы из подкаталогов копируются в соответствующие подкаталоги того каталога, в который копируются файлы;
/e - копирование всех подкаталогов, даже если они пусты. Используется только вместе с режимом /s;
/a - копирование только тех файлов, у которых установлен атрибут "архивировать";
/m - копирование только тех файлов, у которых установлен атрибут "архивировать". После копирования, атрибут "архивировать" отменяется;
/dдата - копирование файлов, созданных или измененных начиная с указанной даты. Если дата не указана, то копируются только файлы, более новые, чем файлы, которые они замещают;
/p - запрос на копирование каждого файла;
/y - перезапись имеющихся файлов с теми же именами без запросов;
/n - проверка правильности копирования каждого файла.


Формат команды:
Имя-дисковода:
Примеры:
С: - установить текущим диск с:;
a: - установить текущим диск a:.

Формат команды:
verify [on/off]
Примеры:
verify on - включить режим проверки при записи на диски;
verify off - отключить режим проверки при записи на диски;
verify - вывести информацию о том, включен или выключен режим проверки.

Формат команды:
format дисковод: [параметры]

Параметры:
/s - создать системный диск;
/v:метка - задание метки диска;
/u - безусловное форматирование с уничтожением имеющихся данных;
/q - быстрая очистка без контроля наличия сбойных участков.

Если параметры не указаны, то программа проверяет, форматирована ли дискета; оставляет формат таким же, что и имеющийся; стирает информацию обо всех файлах и каталогах из системных областей; тестирует область данных на наличие сбойных участков.
Примеры:
format a: /u - безусловное форматирование дискеты а:;
format a: /q - очистка дискеты;
format a: /s - форматировать дискету и сделать ее системной. Наверх

Формат команды:
sys [путь] диск:

Если путь не задан, системные файлы берутся из корневого каталога текущего диска.
Примеры:
sys a: - перенести на диск а: системные файлы из корневого каталога текущего диска.

Формат команды:
label дисковод:


Вывод информации о дате и установка даты в компьютере

Формат команды:
date
Примеры:
date
Запрос: Введите новую дату (дд-мм-гг): (Enter new date (dd-mm-yy))
Вводимая строка: 11-09-2000
Вывод информации о времени и установка времени в компьютере

Формат команды:
time
Примеры:
time - вывести текущее время;
time 11:29 - установить время 11 часов 29 минут.

Формат команды:
prompt [текст]

Как удалить все файлы с компьютера

Надежно удалить данные с диска можно несколькими способами: средствами системы и сторонних программ, и для начала мы остановимся на первом варианте.

Если необходимо удалить все данные вместе с файлами операционной системы, тем самым очистив его на 100%, жесткий диск лучше всего снять и подключить к другому рабочему компьютеру по USB или непосредственно к материнской плате.

  1. Подключив накопитель к компьютеру, откройте через горячую клавишу Win + X оснастку «Управление дисками».

Как удалить все файлы с компьютера-0

Как удалить все файлы с компьютера-1

Как удалить все файлы с компьютера-2

Как удалить все файлы с компьютера-3

Как удалить все файлы с компьютера-4

В результате жесткий диск будет полностью очищен и от файлов, и от разметки.

Как удалить все файлы с компьютера-5

diskpart
list disk
select disk 1
clean
create partition primary
select partition 1
format fs=ntfs
assign letter=x

В результате этих действий на диске будут уничтожены все разделы, перезаписаны оставшиеся файлы, а на месте полученного нераспределенного пространства создан единый раздел в файловой системе NTFS с буквой X.

Если помимо системного диска на компьютере уже имеется второй физический HDD, номером подключённого очищаемого носителя в третьей команде будет уже не 1, а 2, так что будьте внимательными. Под номером 0 всегда идет системный накопитель.

Способ 3: Загрузочный диск WinPE

Если возможности снять и подключить жесткий диск к другому компьютеру нет, воспользуйтесь специальным софтом для работы в среде предустановки WinPE — набором средств администрирования компьютера, представляющим собой загрузочный образ ISO. Этот образ необходимо будет записать на флешку и загрузить с нее компьютер. За пример мы возьмем одну из таких программ.

    Создайте загрузочную флешку, записав на нее скачанный образ.

Как удалить все файлы с компьютера-6

Как удалить все файлы с компьютера-7-1

Как удалить все файлы с компьютера-8

Как удалить все файлы с компьютера-9

Как удалить все файлы с компьютера-10

Как удалить все файлы с компьютера-11-1

После этого начнется процедура удаления всех имеющихся на HDD разделов и файлов, которые будут перезаписаны нулями.

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Команда rm означает «remove» и создана для удаления файлов и каталогов.

Внимание! Если вы новичок в GNU/Linux, вы должны быть очень осторожны при запуске команды rm , потому что, как только вы удалите файлы, вы не сможете восстановить содержимое файлов и каталогов.

Хотя есть некоторые инструменты и команды, с помощью которых можно восстановить удаленные файлы, но для этого вам нужны экспертные навыки и это не всегда срабатывает.

По умолчанию команда rm не удаляет каталоги, чтобы удалить каталоги и всё их содержимое, включая вложенные каталоги, нужно использовать опцию -r , то есть рекурсивное удаление.

2. Синтаксис.

где — один или несколько файлов и/или каталогов, записанных через пробел, можно использовать шаблон по маске файла, например, *.txt .

  • -f или --force — Игнорировать несуществующие файлы и аргументы. Никогда не выдавать запросы на подтверждение удаления.
  • -i — Выводить запрос на подтверждение удаления каждого файла.
  • -I — Выдать один запрос на подтверждение удаления всех файлов, если удаляется больше трех файлов или используется рекурсивное удаление. Опция применяется, как более «щадящая» версия опции -i .
  • --interactive[= КОГДА ] — если значение КОГДА не задано, то используется always .

Вместо КОГДА можно использовать:

    • never — никогда не выдавать запросы на подтверждение удаления.
    • once — выводить запрос один раз (аналог опции -I ).
    • always — выводить запрос всегда (аналог опции -i ).

    3. Примеры использования.

    3.1. Удалить файл.

    Чтобы удалить файл с помощью команды rm достаточно указать название файла:

    Ответ:


    Можно удалить несколько файлов, перечислив их имена через пробел:

    Ответ:


    3.2. Удалить файл с необычным именем.

    Если нужно удалить файл, название которого начинается с символа - , например, файл -myfile , то используется следующая команда:

    Ответ:


    Ответ:


    3.3. Удалить все файлы в текущем каталоге.

    Чтобы удалить все файлы в текущем каталоге можно использовать шаблонную запись звездочка * :

    Ответ:


    3.4. Выдать запрос на удаление всего один раз на всё.

    При использовании опции -I выводится всего один запрос на подтверждение удаления файлов, причем, только если удаляемых файлов четыре и более. Если файлов 3 , или 2 , или 1 , то запрос не выводится.

    То есть параметр -I в команде rm перед удалением более трех файлов или рекурсивным удалением запрашивает подтверждение:

    Ответ:


    3.5. Удалить файлы и каталоги без предварительного запроса или не существующие.

    Например, ногда не нужно, чтобы выходил вопрос об удалении файлов и каталогов и всё происходило автоматически:

    Ответ:


    Также попробуем удалить несуществующий файл или каталог:

    Ответ: просто успешно применится команда и всё, нет предупреждений, что чего-то не существует.

    3.6. Удалить каталог и его содержимое рекурсивно.

    Если вы пытаетесь удалить каталог, вам необходимо использовать параметр командной строки -r . В противном случае rm выдаст ошибку, указывающую, что вы пытаетесь удалить каталог:

    Команде rm вместе параметром -r рекурсивно удалит все файлы и подкаталоги в родительском каталоге.

    Удалим каталог mydir и все файлы и подкаталоги внутри его:

    Ответ:


    3.7. Удаление файлов и подкаталогов интерактивно.

    Если вы хотите, чтобы rm запрашивала подтверждение перед каждым удалением, используйте опцию -i командной строки:

    То есть, чтобы перед удалением каждого файла выводилось подтверждение на удаление каждого файла в целевом каталоге, без учета подкаталогов, используется опция -i :

    Ответ:


    Используйте опцию -ri в команде rm для интерактивного удаления файлов и подкаталогов.

    При удалении каждого файла, в каждом подкаталоге целевого каталога, будет задан вопрос на удаление, персонально для каждого файла:

    Ответ:


    3.8. Удаление пустых каталогов.

    Если вы хотите ограничить возможность удаления каталога rm только пустым каталогом, вы можете использовать опцию командной строки -d :

    Используйте опцию -d для удаления пустого каталога:

    Ответ:


    Вы также можете использовать команду rmdir для удаления пустых каталогов:

    Ответ:


    3.9. Как заставить rm выводить детали работы, которые она выполняет?

    Если вы хотите, чтобы rm отображала подробную информацию о выполняемой операции, это можно сделать, используя опцию -v командной строки:

    Ответ:



    3.10. Регулярные выражения в команде.

    Можно использовать регулярные выражения в команде rm , некоторые примеры показаны ниже:

    К примеру удалим 5 файлов журнала, начиная с log1 до log5 в каталоге /rm_test/ :

    Удалим все файлы в данном каталоге, которые заканчиваются на *.txt :

    Удалим все файлы в текущем каталоге, которые имеют три символа в расширение:

    3.11. Удаление большого количества файлов.

    ‘Argument list too long‘ (Список аргументов слишком длинный).

    В приведенном ниже примере требуется удалить все файлы (около 300001) из каталога /home/logman/linux_logs/ и его подкаталогов, все и сразу:

    Ответ: 300001

    Ответ: -bash: /bin/rm: Argument list too long

    Чтобы решить эту проблему, используйте команду:

    4. Как защитить файл или каталог от удаления.

    Защитим файл или каталог от удаления:

    Давайте удалим защищенный от записи файл some_file_01.txt :

    Ответ:


    Примечание: опция -f не будет работать для каталогов, защищенных от записи.

    Как мы видим выше, когда мы пытаемся удалить файл или каталог, защищенный от записи, с помощью команды rm , выходит предупреждение.

    Для удаления файла или каталога снимите с него атрибут защиты с помощью тега -i :

    Давайте удалим защищенный от записи файл some_file_01.txt :

    Ответ: нормально позволит удалить с запросом на удаление.

    5. Как уничтожить операционную систему одной командой?

    Команда rm -rf / , выполненная от имени суперпользователя, уничтожит все данные с корневого раздела диска.

    Ключ -r используется для того, чтобы выполнять рекурсивный обход всех каталогов.

    Если выполнить эту команду в терминале, а именно выполнить:

    Появится предупреждение о том, что выполнение команды опасно:

    Таким образом программа rm защищает сама себя от плохих действий. При этом сразу же сообщает нам, что мы можем использовать ключ --no-preserve-root , чтобы обойти это предупреждение.

    Если выполнить команду:

    Тогда все данные с корневого раздела диска будут удалены!

    Иногла злоумышленнки могу замаскировать ввод команды вот так:

    Примечание! Иногда данная команда используется, чтобы «подшутить» над новичками в GNU/Linux. Некоторые пользователи на форумах советуют «чайникам» выполнить данную команду, чтобы решить свои проблемы. Чтобы шутка удалась, саму команду иногда маскируют, например, вставляют ее внутрь другой длинной команды, чтобы она не так выделялась.

    Процесс работы rm -rf / примерно следующий:

    • Команда выполняется от имени суперпользователя.
    • Копия программы rm загружается в оперативную память.
    • Программа rm начинает удаление всех файлов с корневого раздела / .
    • Во время удаления файлов программа rm в какой-то момент удаляет и саму себя (исполняемый файл программы, файл /bin/rm ). Так как копия программы находится в оперативной памяти, то она продолжает работать, не смотря на то, что исполняемый файл уже удален.
    • Когда удаление файлов завершено, программа rm выгружается из оперативной памяти.
    • На данном этапе в памяти находятся только те программы, которые уже были там до выполнения команды rm (например, ядро, драйвера, окно терминала и так далее).

    Причечание! Очень важный момент, который нужно учитывать. Современные UEFI системы монтируют директорию с прошивками в директорию /sys . Так как rm удаляет все файлы и с примонтированных разделов, то прошивки также будут удалены. Таким образом можно получить не только неработающую систему, но и неработающий компьютер. Будьте внимательны!

    6. Шутка про удаление всех французских языковых пакетов с атрибутом -fr.

    Внимание! Все, что вы прочитаете ниже, написано только в информационных целях, не повторяйте этого на своем компьютере!

    Команда rm -rf / является довольно популярной в узких кругах. Это не потому, что ей постоянно пользуются, а наоборот её избегают. Это что-то вроде шутки у заядлых линуксоидов.

    +

    10 Смотреть ответы Добавь ответ +10 баллов


    Ответы 10

    +

    Удаляет из текущей папки

    Ответ

    +

    Ответ

    +

    begin
    var b:array[,] of integer:=((1,2,3,0),(5,6,0,8),
    (9,10,11,12),(13,0,15,16),(17,18,19,20));
    Writeln('Исходный массив: ',b);
    var n:=b.GetLength(0);
    var m:=b.GetLength(1);
    // удаляем строки без нулевых элементов
    for var i:=n-1 downto 0 do begin
    var FoundZero:=False;
    for var j:=0 to m-1 do
    if b[i,j]=0 then begin FoundZero:=True; Break end;
    if not FoundZero then DeleteRow(b,i) // удалить строку
    end;
    Writeln('Результирующий массив: ',b);
    end.

    Тестовое решение:
    Исходный массив: [[1,2,3,0],[5,6,0,8],[9,10,11,12],[13,0,15,16],[17,18,19,20]]
    Результирующий массив: [[1,2,3,0],[5,6,0,8],[13,0,15,16]]

    Ответ

    +

    begin
    var m:=ReadInteger('Количество строк в матрице:');
    var n:=ReadInteger('Количество столбцов в матрице:');
    Writeln('*** Исходная матрица [',m,'x',n,'] ***');
    var a:=MatrRandom(m,n,-50,50);
    a.Println(4); Writeln(4*a.ColCount*'-');
    var q:=a.Cols.Select(x->x.First<x.Last).ToArray;
    var k:=q.Where(r->r).Count;
    Writeln('*** Результирующая матрица [',m,'x',k,'] ***');
    var b:=MatrFill(m,k,0);
    var l:=0;
    for var j:=0 to n-1 do
    if q[j] then begin
    for var i:=0 to m-1 do b[i,l]:=a[i,j];
    l+=1
    end;
    b.Println(4)
    end.

    Пример
    Количество строк в матрице: 5
    Количество столбцов в матрице: 8
    *** Исходная матрица [5x8] ***
    15 -35 -11 -18 49 -32 31 -47
    -21 -46 7 -48 3 24 -48 5
    28 -46 36 -9 17 -32 -44 -10
    -16 7 -14 40 13 30 50 -28
    -8 35 -49 47 -31 30 18 20

    *** Результирующая матрица [5x4] ***
    -35 -18 -32 -47
    -46 -48 24 5
    -46 -9 -32 -10
    7 40 30 -28
    35 47 30 20

    Ответ

    +

    begin
    var n:=ReadInteger('Количество строк в матрице:');
    var m:=ReadInteger('Количество столбцов в матрице:');
    Writeln('*** Исходная матрица [',n,',',m,'] ***');
    var a:=MatrRandom(n,m,-9,9);
    a.Println(3); Writeln(3*a.ColCount*'-');
    // 1. удалить строки с нулевыми элементами
    var v:=a.Rows.Select(x->x.All(y->y<>0)).ToArray;
    var q:=new integer[v.Where(r->r=true).Count,a.ColCount];
    var k:=0;
    for var i:=0 to v.Count-1 do
    if v[i] then begin
    q.SetRow(k,a.Row(i)); k+=1
    end;
    Writeln('Матрица, не содержащая строк с нулями');
    a:=Copy(q);
    a.Println(3);
    // 2. отсортировать элементы первого столбца по возрастанию
    a.SetCol(0,a.Col(0).OrderBy(x->x).ToArray);
    Writeln('Матрица с отсортированной колонкой 1');
    a.Println(3);
    // 3. игры с k и b
    var b:integer;
    Write('Введите значения b и 1<=k<=',a.RowCount,': '); Read(b,k);
    for var j:=k to a.RowCount-1 do a[j,m-1]+=b;
    Writeln('Матрица с модифицированной последней колонкой');
    a.Println(3)
    end.

    Пример
    Количество строк в матрице: 5
    Количество столбцов в матрице: 8
    *** Исходная матрица [5,8] ***
    -4 -8 4 -4 8 -6 5 -2
    2 -7 -4 6 8 4 9 -8
    0 -8 -4 -7 -4 -7 6 -3
    6 -4 -8 9 -7 -5 -3 -2
    -9 7 -1 -2 -9 9 7 4

    Матрица, не содержащая строк с нулями
    -4 -8 4 -4 8 -6 5 -2
    2 -7 -4 6 8 4 9 -8
    6 -4 -8 9 -7 -5 -3 -2
    -9 7 -1 -2 -9 9 7 4
    Матрица с отсортированной колонкой 1
    -9 -8 4 -4 8 -6 5 -2
    -4 -7 -4 6 8 4 9 -8
    2 -4 -8 9 -7 -5 -3 -2
    6 7 -1 -2 -9 9 7 4
    Введите значения b и 1<=k<=4: 5 2
    Матрица с модифицированной последней колонкой
    -9 -8 4 -4 8 -6 5 -2
    -4 -7 -4 6 8 4 9 -8
    2 -4 -8 9 -7 -5 -3 3
    6 7 -1 -2 -9 9 7 9

    Замечание: Под удалением без всяких условностей понимается именно удаление. Матрица после удаления просто содержит меньшее количество строк.

    Ответ

    +

    begin
    Writeln('*** Исходный массив 8x7 ***');
    var a:=MatrRandom(8,7,-99,99);
    a.Println(5); Writeln(5*a.ColCount*'-'); // исходный массив
    // заменить все элементы первых трех столбцов на их квадраты
    for var i:=0 to 2 do
    a.SetCol(i,a.Col(i).Select(x->x*x).ToArray);
    Writeln('*** После замены в 3х первых столбцах ***');
    a.Println(5); Writeln(5*a.ColCount*'-');
    // вставить между средними строками первую строку
    SetLength(a,9,7);
    for var i:=7 downto 4 do
    a.SetRow(i+1,a.Row(i));
    a.SetRow(4,a.Row(0));
    Writeln('*** После вставки первой строки в середину ***');
    a.Println(5); Writeln(5*a.ColCount*'-');
    // удалить все столбцы, в которых 1-й элемент больше последнего
    var d:=0;
    for var i:=0 to 6 do
    if a[0,i]>a[8,i] then d+=1
    else
    if d>0 then a.SetCol(i-d,a.Col(i));
    SetLength(a,9,7-d);
    Writeln('*** После удаления столбцов ***');
    a.Println(5); Writeln(5*a.ColCount*'-');
    // поменять местами первую и последнюю строку
    a.SwapRows(0,a.RowCount-1);
    Writeln('*** Результирующий массив ***');
    a.Println(5)
    end.

    Пример
    *** Исходный массив 8x7 ***
    -42 10 -92 -23 51 -50 31
    62 -75 25 -37 87 -9 63
    -99 67 61 -19 -27 17 -96
    -45 -7 83 -34 33 35 -95
    29 86 -85 -94 43 -89 63
    -38 64 -93 55 -53 -56 98
    -34 -20 34 -2 -89 92 85
    -11 48 -75 -81 -38 73 -97

    *** После замены в 3х первых столбцах ***
    1764 100 8464 -23 51 -50 31
    3844 5625 625 -37 87 -9 63
    9801 4489 3721 -19 -27 17 -96
    2025 49 6889 -34 33 35 -95
    841 7396 7225 -94 43 -89 63
    1444 4096 8649 55 -53 -56 98
    1156 400 1156 -2 -89 92 85
    121 2304 5625 -81 -38 73 -97

    *** После вставки первой строки в середину ***
    1764 100 8464 -23 51 -50 31
    3844 5625 625 -37 87 -9 63
    9801 4489 3721 -19 -27 17 -96
    2025 49 6889 -34 33 35 -95
    1764 100 8464 -23 51 -50 31
    841 7396 7225 -94 43 -89 63
    1444 4096 8649 55 -53 -56 98
    1156 400 1156 -2 -89 92 85
    121 2304 5625 -81 -38 73 -97

    *** После удаления столбцов ***
    100 -50
    5625 -9
    4489 17
    49 35
    100 -50
    7396 -89
    4096 -56
    400 92
    2304 73

    *** Результирующий массив ***
    2304 73
    5625 -9
    4489 17
    49 35
    100 -50
    7396 -89
    4096 -56
    400 92
    100 -50

    Читайте также: