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
Reply
(The comment has been removed)
Ты не согласилась бы провести для нас опрос среди студентов 1-2-3 курсов? Мы это делаем каждый год, просто нам постоянно не везло с кураторами. :( У нас есть письмо Министерства образования, займет это немного твоего времени и будет некоторым образом оплачено. Не сильно, на там надо лишь раздать анкеты студентам, они напишут по 4 своих учителя, а потом собрать, посчитать анкеты, запаковать в конверты и передать нам. Если ты сможешь, кинь мне, пожалуйста, в личку свой телефон и ФИО, я тебе перезвоню, все объясню подробнее, и договоримся.
Reply
Reply
Это больше пример синтаксиса for. Мог быть и на echo.
Тестерам нужно чаще взять копию сырых данных и еще раз над ними поиздеваться.
Reply
> for i in 1_?.in ; do cp $i ${i/1_/2_} ; done;
и что -- это даже сработает если в качестве "x" будет пробел (" ") ? тогда клёво! ^__^
# P.S.: НЕ НЕ! я не пытаюсь тут критиковать, просто мне слегка показалось, на секундочку, что не хватает всяких ковычек и знаков двойного минуса :-)
Reply
Господи, это памятка на использование for. Для меня. Памятка по использованию " или ' мне не нужна. Поэтому такой куцый, неэффективный, неправильный пример. И вообще, надо на питоне.
Reply
..просто сам bash -- сплошь и рядом требует использования ковычек <"> и двойных-минусов "--" .. даже если НЕ брать в расчёт cp, а предположить что там например другая команда :-)
но вообще конечно, for очень впечатляет своим разнообразием :-)
> И вообще, надо на питоне.
ну эт стопудова :-) ..там по крайней мере не надо беспокоится о том что вдруг тот или иной файл начинается например со знака минус или пробела :-)
Reply
import shutil
shutil.copyfile(src, dst)
Reply
find/xargs содержит в себе несколько меньше граблей
Reply
(Про кавычки в примере не писала, ибо кавычки уже на уровне условных рефлексов, а фор вечно путаю где ; поставить)
http://stackoverflow.com/questions/10803296/modifying-replace-string-in-xargs
Особенно, когда надо обойти и переименовать несколько директорий (вложенный цикл)?
Reply
Про вложенные циклы вы зря вспомнили - вложенные циклы у find-а встроенные.
При правильно поставленной задаче find сильно проще и безопаснее, и главное быстрее
find ... -print0 | xargs -J ^ -0 mv ^ destdir
До кучи - у меня как правило нет bash-а.
PS: Что б не быть голословным - реальная практическая задачка:
Есть много файликов, разложенных по каталогам 4х уровней вложенности.
В основном файлики лежат на 4м уровне, но некоторые в результате сбоев остались на вышестоящих.
Формат - сильно специальный, данных очень много. Был разработан новый формат хранения.
Утилиты под новый формат прозрачно работают с компрессией, что дает выигрыш в 10-15 раз.
Требуется перекинуть всю стопку файлов из одного каталога в другой, с сохранением иерархии, сменив формат и поменяв файлам префикс src.XXXX -> dst.XXXX.
Файлы продолжают прибывать примерно по гигабайту в день, и начинать лучше со старых.
Конвертировать надо быстрее чем прибывают новые данные.
сd $O ( ... )
Reply
Reply
[Spoiler (click to open)]текст будет свернут
Reply
Leave a comment