Переименуйте файлы кратных чисел с помощью сценариев Bash

Слишком легкий, если Вы не хотите обширное программирование,

Предположим, что Вы смешиваетесь от log1 и log2, получающийся в log:

Контролируйте log1 в фоне и добавьте изменения в журнале tail -f log1 >> log &

Запустите другой процесс, контролирующий на log2 tail -f log2 >> log &

Для дачи показаний попробовать

echo ok1 >> log1; echo ok2 >> log2

Теперь, если Вы проверяете log, Вы доберетесь

ok1

ok2

27
26.03.2014, 23:58
6 ответов
[112348] Вы были правы, рассмотрев вопрос о переименовании первым. Синтаксис немного странный, если Вы не привыкли к регексуалам, но это, несомненно, самый быстрый/короткий маршрут, как только Вы знаете, что делаете:
  • Он просто соответствует первым 4 числам и меняет их на те, которые Вы указали.
    1. А тестовый жгут ([112651]-vn[112652] означает быть многословным, но не [112653]делать [112654] ничего), используя имена ваших файлов:
  • 42
    27.01.2020, 19:39
    [112225] Это должно сработать:

    Он заменяет 4-й и 12-й символы на "25032014".[112228].

    25
    27.01.2020, 19:39

    Это должно сработать. Обратите внимание - у меня нет привычки передавать массовые mv команды - как написано, это просто эхо. Вы должны разобраться с этим, прежде чем это сработает. [112230]

    1
    27.01.2020, 19:39
    [112356] Если вы обнаружили, что часто занимаетесь подобными вещами, поищите "rename.pl". Это скрипт на perl, но он позволяет просто подать ему perl-код (например, выражение s///), и он сделает массовое переименование, основанное на этом выражении или коде. Здесь есть базовая версия: [112655]http://stackoverflow.org/wiki/Rename.pl[112656], но есть и другие версии, плавающие по сети. Она существует уже давно, и возраст, и возраст. [112359]
    0
    27.01.2020, 19:39

    Простой собственный способ сделать это без цикла, с обходом каталогов :

    find -type f | xargs -I {} mv {} {}.txt
    

    Он переименует каждый файл на месте.

    И ниже рабочий пример с распараллеливанием :

    find -name "file*.p" | parallel 'f="{}" ; mv -- {} ${f:0:4}2503${f:8}'
    
    1
    29.04.2021, 00:41

    это действительно ответ @Eric сверху, но это элегантный ответ, поэтому я репостю его как правильный ответ, чтобы привлечь к нему больше внимания.

    for f in *Huge*; do mv "$f" "${f/Huge/Monstrous}"; done
    
    11
    29.04.2021, 00:41

    Теги

    Похожие вопросы