Obtém apenas o nome do arquivo do comando find e mail

1

O seguinte comando find resultará em vários arquivos e enviará mensagens para todos aqueles

find /home/cde -ctime -1 -name "Sum*pdf*" -exec uuencode {} {} \; |mailx -s "subject" [email protected]

Mas estou recebendo anexos como homecdeSum123.pdf e homecdeSum324.pdf . Como obter nomes de arquivos exatos no meu anexo.

    
por Aravind 08.07.2014 / 20:27

2 respostas

2

Se eu entendi bem, você quer que os anexos tenham o nome do arquivo como Sum123.pdf em vez de homecdeSum123.pdf . Eu suponho que o último nome é produzido pelo seu programa de email que remove as barras no nome do caminho ao salvar.

Acho que você deve usar uma maneira diferente de chamar uuencode , removendo o nome do caminho no segundo parâmetro:

find /home/cde -ctime -1 -name "Sum*pdf*" | while read name; do uuencode "$name" "${name##*/}" | mailx -s "subject" [email protected]; done

Isso enviará um e-mail separado para cada arquivo. A parte ${name##*/} terá a variável $name , removerá tudo até e incluindo a última barra e retornará o resultado.

Se você quiser enviar todos os arquivos em um e-mail, basta colocar a parte mailx do canal no final:

find /home/cde -ctime -1 -name "Sum*pdf*" | while read name; do uuencode "$name" "${name##*/}"; done | mailx -s "subject" [email protected]
    
por 09.07.2014 / 15:24
2

Experimente este oneliner

find /home/cde -ctime -1 -name "Sum*pdf*"  | uuencode files.txt | mailx -s "subject" [email protected]
    
por 08.07.2014 / 21:07

Tags