Precisa capturar o nome do arquivo do caminho do diretório fazendo um loop no arquivo de dados

Precisa capturar o nome do arquivo do caminho do diretório fazendo um loop no arquivo de dados

Eu tenho o seguinte arquivo de dados.

recID#  Attachment#            Attachment#2.          ...... Attachment #15 
101      c:/a/b/c/d/fil1.txt    c:/a/b/c/d/e/aaa.txt   ...... c:/a/b/c/d/e/fff.txt        
103      c:/a/b/c/d/abc.txt     c:/a/b/c/d/e/bbb.txt   ...... c:/a/b/c/d/e/ggg.txt   
104      c:/a/b/c/d/e/efg.txt   c:/a/b/c/d/e/ccc.txt   ...... c:/a/b/c/d/e/hhh.txt   
105      c:/a/b/c/mnop.txt      c:/a/b/c/d/e/ddd.txt   ...... c:/a/b/c/d/e/iii.txt 

Quero capturar apenas o nome do arquivo e não o diretório inteiro. produção abaixo do esperado.

rec ID#  Attachment1#         ttachment#2 ...... Attachment #15
101         fil1.txt            aaa.txt     ...... fff.txt      
103         abc.txt             bbb.txt     ...... ggg.txt  
104         efg.txt             ccc.txt     ...... hhh.txt  
105         mnop.txt            ddd.txt     ...... iii.txt  

Também quero comparar cada arquivo no diretório local c:\a\b\c disponível ou não. se disponível, quero criar o diretório /Test e mover todos os arquivos disponíveis nesse diretório.

por exemplo: coluna Attachment1 o nome do arquivo fil1.txt, se estiver disponível neste diretório "c:\a\b\c" então quero copiar o arquivo do diretório "c:\a\b\c" para " c:\a\b\d".

Obrigado

Responder1

Para remover a parte do diretório de todos os nomes de arquivos que você pode usar

sed 's#[^ \t]*/##g' inputfile > outputfile

ou

awk '{gsub(/[^ \t]*\//,"",$0);print}' inputfile > outputfile

Do arquivo de entrada de amostra na pergunta, recebo esta saída

recID#  Attachment#            Attachment#2.          ...... Attachment #15 
101      fil1.txt    aaa.txt   ...... fff.txt        
103      abc.txt     bbb.txt   ...... ggg.txt   
104      efg.txt   ccc.txt   ...... hhh.txt   
105      mnop.txt      ddd.txt   ...... iii.txt 

Se a formatação da saída for importante, especifique na pergunta quais requisitos você possui.

Como não está claro na pergunta como os diretórios onde verificar os arquivos ou para onde mover os arquivos estão relacionados ao arquivo de entrada, não posso responder à outra parte da pergunta.

Editar:

Caso a entrada real contenha barras invertidas ( \) em vez de barras ( /), os seguintes comandos modificados são usados [/\\]​​em vez de /ou \/para fazê-los funcionar com ambas as variantes de entrada:

sed 's#[^ \t]*[/\\]##g' inputfile > outputfile
awk '{gsub(/[^ \t]*[/\\]/,"",$0);print}' inputfile > outputfile

informação relacionada