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 :
-
-rusa expressões regulares estendidas (o dialeto da expressão regular a ser usado). -
-eO 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_~~
-
sfaz 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 -
/folderapenas 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
iignorar maiúsculas,gfaç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).