Isso deve funcionar:
sh <(sed -r 's/^\s*(.*)\s+([0-9\.]+)\s+([0-9A-Z]{8}\.dat)\s*$/mv -iv " "/' files)
... onde files
é o nome do seu arquivo de origem.
O que isto faz é passar o resultado do comando sed
para uma nova instância de sh
(o shell), usando processo de substituição . A saída do comando sed
é:
mv -iv 000011F4.dat "0.1 New File Name.xlsx"
mv -iv 000011F5.dat "0.2 New File Name.xlsx"
mv -iv 000011F6.dat "0.3 New File Name.xlsx"
mv -iv 000011F7.dat "0.4 New File Name.xlsx"
mv -iv 000011F8.dat "0.5 New File Name.xlsx"
mv -iv 000011F9.dat "0.6 New File Name.xlsx"
Separando o comando sed
, ele procura um padrão:
-
^
- o começo da linha -
\s*
- qualquer espaço em branco no início -
(.*)
- qualquer caractere (os parênteses armazenam o resultado em)
-
\s+
- pelo menos um caractere de espaço em branco -
([0-9\.]+)
- pelo menos um dos0-9
e.
(armazenados em)
-
\s+
- pelo menos um caractere de espaço em branco -
([0-9A-Z]{8}\.dat)
- 8 caracteres em0-9
ouA-Z
, seguidos por.dat
(armazenados em)
-
\s*
- qualquer espaço no final -
$
- o fim da linha
... e o substitui por mv -iv " "
, em que to
são os valores armazenados anteriormente. Você pode usar algo diferente de um espaço entre o número da versão e o resto do nome do arquivo, se quiser.
Aqui está o resultado:
$ ls -l
total 60
-rw-rw-r-- 1 z z 0 Aug 8 14:15 000011F4.dat
-rw-rw-r-- 1 z z 0 Aug 8 14:15 000011F5.dat
-rw-rw-r-- 1 z z 0 Aug 8 14:15 000011F6.dat
-rw-rw-r-- 1 z z 0 Aug 8 14:15 000011F7.dat
-rw-rw-r-- 1 z z 0 Aug 8 14:15 000011F8.dat
-rw-rw-r-- 1 z z 0 Aug 8 14:15 000011F9.dat
-rw-rw-r-- 1 z z 222 Aug 8 13:47 files
$ sh <(sed -r 's/^\s*(.*)\s+([0-9\.]+)\s+([0-9A-Z]{8}\.dat)\s*$/mv -iv " "/' files)
'000011F4.dat' -> '0.1 New File Name.xlsx'
'000011F5.dat' -> '0.2 New File Name.xlsx'
'000011F6.dat' -> '0.3 New File Name.xlsx'
'000011F7.dat' -> '0.4 New File Name.xlsx'
'000011F8.dat' -> '0.5 New File Name.xlsx'
'000011F9.dat' -> '0.6 New File Name.xlsx'
$ ls -l
total 60
-rw-rw-r-- 1 z z 0 Aug 8 14:15 0.1 New File Name.xlsx
-rw-rw-r-- 1 z z 0 Aug 8 14:15 0.2 New File Name.xlsx
-rw-rw-r-- 1 z z 0 Aug 8 14:15 0.3 New File Name.xlsx
-rw-rw-r-- 1 z z 0 Aug 8 14:15 0.4 New File Name.xlsx
-rw-rw-r-- 1 z z 0 Aug 8 14:15 0.5 New File Name.xlsx
-rw-rw-r-- 1 z z 0 Aug 8 14:15 0.6 New File Name.xlsx
-rw-rw-r-- 1 z z 222 Aug 8 13:47 files