從 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

相關內容