Se você tiver um arquivo (denominado list
contendo, o seguinte e você para criar um diretório para cada nome de linha no arquivo, em que o nome do diretório é apenas a parte após ./folder?/folder_
.
./folder1/folder_01_PAP_515151
./folder1/folder_04_PAP_654123
./folder2/folder_055_PAP_685413
./folder2/folder_100_PAP_132312
./folder3/folder_32_PAP_3513131
./folder3/folder_53_PAP_3213321
./folder3/folder_84_PAP_3313213
Então você pode fazer.
cat list | sed -r -e 's~[.]/folder[0-9]+/folder_~~' | xargs -I{} mkdir -p «prefix»{}
- Eu fiz isso para que os números das pastas tenham um ou mais dígitos.
- Deixe o "prefixo" em branco, a menos que você queira um prefixo.
Se você deseja apenas renomear as pastas / diretórios originais, mantendo o conteúdo original, então você pode fazer:
Teste com este. Em seguida, remova o -n
da renomeação para fazer isso de verdade.
find . -type d -name "*_PAP_" | rename -n 's~[.]/folder[0-9]+/folder_~~'
Observe que o padrão de pesquisa é o mesmo para rename
e para sed
. rename
funciona em nomes de arquivos, sed
funciona em arquivos ou fluxos.
As opções para sed
:
-
-r
usa expressões regulares estendidas (o dialeto da expressão regular a ser usado). -
-e
O próximo arg é a expressão (programa sed). -
's~[.]/folder[0-9]+/folder_~~'
da expressão, citada para que a shell não a interprete.
A expressão explicada: s~[.]/folder[0-9]+/folder_~~
-
s
faz uma pesquisa e substitui -
~
o caractere separador separa a expressão em seções, você pode usar qualquer caractere, mas deve usar o mesmo a cada vez.s~«search_for»~«replace_with»~«options»
ou usando um caractere diferentes@«search_for»@«replace_with»@«options»
. - «search_for» uma expressão regular:
-
[.]
um ponto -
/folder
apenas o que diz. -
[0-9]
um dígito. -
+
um ou mais do átomo anterior (o dígito) (um ou mais dígitos). -
/folder_
apenas o que diz.
-
- «replace_with» Com o que substituí-lo, neste caso nada.
- «option» nesta nota de caso, outras incluem
i
ignorar maiúsculas,g
faça mais de uma vez (não apenas a primeira string encontrada).
A linguagem sed
/ rename
é muito poderosa, embora complexa. As partes principais que você usaria são s
(como usado aqui), e talvez próximo y
, vale a pena aprender. Você também terá que aprender expressões regulares (também usadas pelo grep e outros comandos).