Extrai o nome do arquivo do comando find

1

Estou tentando extrair o nome do arquivo e anexar ao email. Mas quando eu enviar e-mail, o anexo vem com o nome do caminho e o nome do arquivo.

Ex: dir=/home/as123/bill e filename=abc.pdf.Z e estou recebendo anexo como

homeas123billabc.pdf.Z

find $dir -ctime -1 -type f -name "abc*pdf*" -exec basename {} \; -exec uuencode {} {} \; | mailx -s "north" [email protected]

printf não instalado na minha máquina, sem que como escrever meu script para obter apenas o nome do arquivo como anexo?

    
por Aravind 24.06.2014 / 16:56

1 resposta

3

Eu suspeito que você quer dizer que você deseja que o nome do arquivo seja incluído no uuencode output:

begin 644 path/to/the/file.pdf.Z
%=&5S='H'
'
end

para não incluir o path/to/the .

Para isso, você deseja que o segundo argumento transmitido para uuencode seja o nome base. Para isso você precisaria fazer como:

find "$dir" -ctime -1 -type f -name "abc*pdf*" -exec sh -c '
  for file do
    uuencode "$file" "$(basename "$file")"
  done' sh {} +

Ou se o seu find suportar -execdir :

find "$dir" -ctime -1 -type f -name "abc*pdf*" -execdir uuencode {} {} \;

Se o seu find suportou -printf , você poderia ter feito isso com:

find "$dir" -ctime -1 -type f -name "abc*pdf*" -printf '%p
begin 644 path/to/the/file.pdf.Z
%=&5S='H'
'
end
%f
find "$dir" -ctime -1 -type f -name "abc*pdf*" -exec sh -c '
  for file do
    uuencode "$file" "$(basename "$file")"
  done' sh {} +
' | xargs -r0n2 uuencode
    
por 24.06.2014 / 17:53

Tags