find 명령 및 메일에서 파일 이름만 가져오기

find 명령 및 메일에서 파일 이름만 가져오기

다음 find 명령은 여러 파일을 생성하여 모두 보냅니다.

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

homecdeSum123.pdf그런데 , 와 같은 첨부파일을 받았습니다 homecdeSum324.pdf. 첨부파일에서 정확한 파일명을 얻는 방법.

답변1

Sum123.pdf내가 올바르게 이해 했다면 첨부 homecdeSum123.pdf파일의 파일 이름을 .

uuencode두 번째 매개변수의 경로 이름을 제거하여 다른 호출 방법을 사용해야 한다고 생각합니다 .

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

이렇게 하면 각 파일에 대해 별도의 이메일이 전송됩니다. 이 ${name##*/}부분은 변수를 가져 $name와서 마지막 슬래시까지의 모든 항목을 제거하고 결과를 반환합니다.

모든 파일을 하나의 메일로 보내려면 mailx끝에 파이프의 일부를 넣으십시오.

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

답변2

이 단 하나의 라이너를 사용해보십시오

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

관련 정보