
ファイル名を抽出してメールに添付しようとしています。しかし、メールを送信すると、添付ファイルにパス名とファイル名が付きます。
例: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