for

Jan 31, 2027 23:05

Дорогая память, пожалуйста, выучи быстрый способ делать всего много в шеллах. Ибо достало, что ты помнишь, где это было написано, а не как это сделать.
bash, command line, копируем все файлы вида 1_x.in в 2_х.in

for i in 1_?.in ; do cp $i ${i/1_/2_} ; done;

it

Leave a comment

Comments 14

a_k_e_l_a October 20 2011, 09:10:11 UTC
Прости, пожалуйста. Я правильно помню, это ты работаешь в МИФИ в Долгопрудном?

Reply

(The comment has been removed)

a_k_e_l_a October 21 2011, 02:17:07 UTC
Именно это я и имела в виду, извини, не очень помню, как меня зовут.
Ты не согласилась бы провести для нас опрос среди студентов 1-2-3 курсов? Мы это делаем каждый год, просто нам постоянно не везло с кураторами. :( У нас есть письмо Министерства образования, займет это немного твоего времени и будет некоторым образом оплачено. Не сильно, на там надо лишь раздать анкеты студентам, они напишут по 4 своих учителя, а потом собрать, посчитать анкеты, запаковать в конверты и передать нам. Если ты сможешь, кинь мне, пожалуйста, в личку свой телефон и ФИО, я тебе перезвоню, все объясню подробнее, и договоримся.

Reply


draug June 18 2012, 09:40:48 UTC
rename 's/1/2/' 1_?.in

Reply

tat_ti June 18 2012, 10:25:19 UTC
спасибо.
Это больше пример синтаксиса for. Мог быть и на echo.

Тестерам нужно чаще взять копию сырых данных и еще раз над ними поиздеваться.

Reply


ext_1387725 September 6 2012, 19:37:02 UTC
> копируем все файлы вида 1_x.in в 2_х.in

> for i in 1_?.in ; do cp $i ${i/1_/2_} ; done;

и что -- это даже сработает если в качестве "x" будет пробел (" ") ? тогда клёво! ^__^

# P.S.: НЕ НЕ! я не пытаюсь тут критиковать, просто мне слегка показалось, на секундочку, что не хватает всяких ковычек и знаков двойного минуса :-)

Reply

tat_ti September 6 2012, 20:07:49 UTC
Не плодите сущностей сверх необходимого.
Господи, это памятка на использование for. Для меня. Памятка по использованию " или ' мне не нужна. Поэтому такой куцый, неэффективный, неправильный пример. И вообще, надо на питоне.

Reply

ext_1387725 September 6 2012, 20:46:06 UTC
ой не не.. я ж очевидно понял что "cp" тут только для примера :-) ...

..просто сам bash -- сплошь и рядом требует использования ковычек <"> и двойных-минусов "--" .. даже если НЕ брать в расчёт cp, а предположить что там например другая команда :-)

но вообще конечно, for очень впечатляет своим разнообразием :-)

> И вообще, надо на питоне.

ну эт стопудова :-) ..там по крайней мере не надо беспокоится о том что вдруг тот или иной файл начинается например со знака минус или пробела :-)

Reply

fandaal May 1 2015, 14:29:14 UTC
python

import shutil
shutil.copyfile(src, dst)

Reply


filonov November 21 2016, 06:18:04 UTC
(занудно) Строго говоря, для произвольного набора файлов for - крайне неудачный способ делать "всего много". Пример с пробелом уже привели.
find/xargs содержит в себе несколько меньше граблей

Reply

tat_ti November 29 2016, 16:58:34 UTC
Вот что, копирование с переименованием ПРОЩЕ на find+xargs?
(Про кавычки в примере не писала, ибо кавычки уже на уровне условных рефлексов, а фор вечно путаю где ; поставить)

http://stackoverflow.com/questions/10803296/modifying-replace-string-in-xargs

Особенно, когда надо обойти и переименовать несколько директорий (вложенный цикл)?

Reply

filonov November 29 2016, 18:53:39 UTC
Вот что, копирование с переименованием ПРОЩЕ на find+xargs?
Про вложенные циклы вы зря вспомнили - вложенные циклы у find-а встроенные.
При правильно поставленной задаче find сильно проще и безопаснее, и главное быстрее
find ... -print0 | xargs -J ^ -0 mv ^ destdir

До кучи - у меня как правило нет bash-а.

PS: Что б не быть голословным - реальная практическая задачка:
Есть много файликов, разложенных по каталогам 4х уровней вложенности.
В основном файлики лежат на 4м уровне, но некоторые в результате сбоев остались на вышестоящих.
Формат - сильно специальный, данных очень много. Был разработан новый формат хранения.
Утилиты под новый формат прозрачно работают с компрессией, что дает выигрыш в 10-15 раз.
Требуется перекинуть всю стопку файлов из одного каталога в другой, с сохранением иерархии, сменив формат и поменяв файлам префикс src.XXXX -> dst.XXXX.
Файлы продолжают прибывать примерно по гигабайту в день, и начинать лучше со старых.
Конвертировать надо быстрее чем прибывают новые данные.

сd $O ( ... )

Reply

tengu_crow April 8 2018, 19:38:36 UTC
+1 к find :)

Reply


tat_ti August 18 2021, 20:14:22 UTC
Проверка как написать таги в комментариях
[Spoiler (click to open)]текст будет свернут

Reply


Leave a comment

Up