findコマンドとメールからファイル名のみを取得する

findコマンドとメールからファイル名のみを取得する

次の find コマンドは、複数のファイルを生成してすべて送信します。

find /home/cde -ctime -1 -name "Sum*pdf*" -exec uuencode {} {} \; |mailx -s "subject" [email protected]

homecdeSum123.pdfさて、のような添付ファイルを受け取りましたhomecdeSum324.pdf。添付ファイルから正確なファイル名を取得する方法。

答え1

Sum123.pdf私が正しく理解した場合は、添付homecdeSum123.pdfファイルのファイル名を 。

uuencode2番目のパラメータのパス名を削除して別の呼び出し方法を使用する必要があると思います。

find /home/cde -ctime -1 -name "Sum*pdf*" | while read name; do uuencode "$name" "${name##*/}" | mailx -s "subject" [email protected]; done

これにより、ファイルごとに別々の電子メールが送信されます。この${name##*/}部分は変数を取得し、$name最後のスラッシュまでのすべての項目を削除し、結果を返します。

すべてのファイルを1つのメールで送信するには、mailx最後にパイプの一部を挿入します。

find /home/cde -ctime -1 -name "Sum*pdf*" | while read name; do uuencode "$name" "${name##*/}"; done | mailx -s "subject" [email protected]

答え2

この単一のライナーをお試しください

find /home/cde -ctime -1 -name "Sum*pdf*"  | uuencode files.txt | mailx -s "subject" [email protected]

関連情報