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

관련 정보