Вы, вероятно, хотите прочитать perlipc документацию, в особенности раздел по Именованным каналам.
http://perldoc.perl.org/perlipc.html#Named-Pipes
perlipc - Межпроцессное взаимодействие Perl (сигналы, fifos, каналы, безопасные подпроцессы, сокеты и семафоры)
Если Вам нужно двухсторонний (чтение и запись) связь с внешней программой, то IPC:: Open2 или IPC:: модули Open3 (стандартный lib жемчуга, также зарегистрированный в URL выше), будут полезны.
Используя rename
(тот от perl
иногда называемый prename
, не от util-linux
):
rename 's/(\d{2})(\d{2})(\d{2})(\d{2})/$1:$2:$3:$4/' *.avi
Это переименовало бы имя файла как custom text 00030402.avi
кому: custom text 00:03:04:02.avi
.
Если Вы обратные косые черты в имени файла (прежде чем :
), скажите:
rename 's/(\d{2})(\d{2})(\d{2})(\d{2})/$1\\:$2\\:$3\\:$4/' *.avi
Для удаления пользовательского текста из имен файлов скажите:
rename 's/.* (\d{2})(\d{2})(\d{2})(\d{2})(.*)/$1\\:$2\\:$3\\:$4$5/' *.avi
С zsh
:
$ autoload zmv
$ zmv -v '(*)(??)(??)(??).avi' '$1\:$2\:$3\:$4.avi'
mv -- custom\ text\ 00030402.avi custom\ text\ 00\\:03\\:04\\:02.avi
(-v для подробного). Удалить пользовательский текст:
$ zmv -v '*(??)(??)(??)(??).avi' '$1\:$2\:$3\:$4.avi'
mv -- custom\ text\ 00030402.avi 00\\:03\\:04\\:02.avi
Вот способ сделать это с Perl regex предвидение:
perl -e '
while($name=shift){
@components = split /(?=(?:[0-9]{2})+[^0-9]+$)/,$name;
shift @components;
$new_name = join '\:',@components;
rename $name => $new_name;
}
' list_of_avi_files
Это будет работать на любое количество пар цифры, не всего 4. Можно также измениться {2}
кому: {3}
, например, и имейте его, разделение на цифре утраивается.
rename -n 's/(\d{2})(\d{2})(\d{2})(\d{2})/$1:$2:$3:$4/' *.avi
сказать? – devnull 28.09.2013, 08:52zlatin 00364220.avi renamed as zlatin 00:36:42:20.avi
– ispasov 28.09.2013, 08:56*
также. – devnull 28.09.2013, 16:14