
ファイル名を抽出してメッセージに追加しようとしています。ところでメールを送ると添付ファイルにパス名とファイル名が一緒に来ます。
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
。
そのために渡したい2番目のパラメータ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