find 명령에서 파일 이름 추출

find 명령에서 파일 이름 추출

파일 이름을 추출하여 메시지에 추가하려고 합니다. 그런데 메일을 보내면 첨부파일에 경로명과 파일명이 같이 옵니다.

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

관련 정보