파일 이름을 추출하여 메시지에 추가하려고 합니다. 그런데 메일을 보내면 첨부파일에 경로명과 파일명이 같이 옵니다.
dir=/home/as123/bill
예를 들면: filename=abc.pdf.Z
나는 점점 더 애착을 갖게 되었습니다.
homeas123billabc.pdf.Z
find $dir -ctime -1 -type f -name "abc*pdf*" -exec basename {} \; -exec uuencode {} {} \; | mailx -s "north" [email protected]
printf
내 컴퓨터에 설치되어 있지 않은 경우 파일 이름만 첨부 파일로 가져오도록 스크립트를 어떻게 작성할 수 있습니까?
답변1
uuencode
파일 이름이 출력 에 포함되기를 원한다는 뜻인 것 같습니다 .
begin 644 path/to/the/file.pdf.Z
%=&5S=`H`
`
end
포함되지 path/to/the
.
이를 위해 전달하려는 두 번째 매개변수 uuencode
는 기본 이름입니다. 이렇게 하려면 다음을 수행해야 합니다.
find "$dir" -ctime -1 -type f -name "abc*pdf*" -exec sh -c '
for file do
uuencode "$file" "$(basename "$file")"
done' sh {} +
또는 귀하가 find
지원하는 경우 -execdir
:
find "$dir" -ctime -1 -type f -name "abc*pdf*" -execdir uuencode {} {} \;
find
지원 한다면 -printf
다음과 같이 할 수 있습니다.
find "$dir" -ctime -1 -type f -name "abc*pdf*" -printf '%p\0%f\0' |
xargs -r0n2 uuencode