Копирование последовательных файлов

У меня есть 12 файлов с именем dmp_000 , dmp_001 и т. Д., dmp_011 до dmp_011 . Я хотел бы скопировать их все в rdmp_000 , rdmp_001 и т. Д., Последовательно, чтобы нумерованные файлы совпадали. Должен быть простой способ сделать это, а не индивидуально?

  • Как написать сценарий оболочки, чтобы при компиляции моей программы на C ++ он поместил двоичный код в двоичный каталог
  • Что такое быстрый способ командной строки для переключения между несколькими каталогами для системного администрирования?
  • Что означает `{{(выход 1); выход 1; }; } `означает?
  • Как узнать, написан ли сценарий оболочки в bash или sh
  • Как я могу распечатать все, кроме последних n символов в bash?
  • Каков наилучший способ найти список нескольких строк в большом текстовом файле
  • Написание сценария оболочки Unix для вызова функции C и перенаправления данных в файл .txt
  • Поиск среди содержимого большого количества текстовых файлов?
  • 5 Solutions collect form web for “Копирование последовательных файлов”

    Я использовал эту команду для генерации некоторых выборочных данных

     % for i in `seq 0 11`;do touch dmp_$(printf "%03d" $i);done % ls dmp_000 dmp_001 dmp_002 dmp_003 dmp_004 dmp_005 dmp_006 dmp_007 dmp_008 dmp_009 dmp_010 dmp_011 

    Чтобы дублировать файлы и сохранять исходные файлы, вы можете изменить / создать даты:

     % for i in dmp*;do cp -p "$i" "r${i}";done % ls dmp_000 dmp_002 dmp_004 dmp_006 dmp_008 dmp_010 rdmp_000 rdmp_002 rdmp_004 rdmp_006 rdmp_008 rdmp_010 dmp_001 dmp_003 dmp_005 dmp_007 dmp_009 dmp_011 rdmp_001 rdmp_003 rdmp_005 rdmp_007 rdmp_009 rdmp_011 

    Чтобы переместить файлы wdmp * в rdmp *

     % for i in wdmp*;do newname=$(echo $i|sed 's/^w/r/'); mv "$i" "$newname";done 

    ПРИМЕЧАНИЕ . Вы также могли использовать ответ @ warl0ck для этого, используя команду rename .

    Если использование zsh допустимо, то:

     autoload -U zmv # load zmv zmv -C 'dmp_(*)' 'rdmp_$1' # rename files 

    Или просто в этом случае:

     zmv -C 'dmp_*' 'r$f' 

    ( $1 , $2 расширяются до соответствующих (...) групп и $f ко всему пути к файлу).

    См. Эту ссылку для получения дополнительных примеров.

    Совместимые с Posix, короткие и все ваши файлы могут ссылаться (в пределах parens) как позиционные параметры 1-12, если вы хотите расширить их.

     % ( set -- wdmp0[0-1][0-9] ;\ > for f ; do cp $fr${f#?} ; done ) 

    Я бы сделал это

     for f in dmp_{000..011}; do [ -f $f ] && cp "$f" "r$f"; done 

    Попробуйте переименовать команду и переименуйте только те, которые были запущены с помощью dmp_ ,

    rename dmp rdmp dmp_*

    Чтобы сохранить файлы, попробуйте альтернативный метод, подобный этому,

    for x in dmp_*; do cp $xr$x; done

    Linux и Unix - лучшая ОС в мире.