Extrahieren Sie den Dateinamen aus dem Suchbefehl

Extrahieren Sie den Dateinamen aus dem Suchbefehl

Ich versuche, den Dateinamen zu extrahieren und an die E-Mail anzuhängen. Aber wenn ich die E-Mail sende, enthält der Anhang Pfad- und Dateinamen.

Bsp.: dir=/home/as123/billund filename=abc.pdf.Zich bekomme Anhänge wie

homeas123billabc.pdf.Z

find $dir -ctime -1 -type f -name "abc*pdf*" -exec basename {} \; -exec uuencode {} {} \; | mailx -s "north" [email protected]

printfist auf meinem Computer nicht installiert. Wie schreibe ich ohne das mein Skript, um nur den Dateinamen als Anhang zu erhalten?

Antwort1

Ich vermute, Sie meinen, dass der Dateiname in der uuencodeAusgabe enthalten sein soll:

begin 644 path/to/the/file.pdf.Z
%=&5S=`H`
`
end

nicht einzuschließen path/to/the.

Dafür soll das zweite Argument uuencodeder Basisname sein. Dazu müssen Sie es folgendermaßen machen:

find "$dir" -ctime -1 -type f -name "abc*pdf*" -exec sh -c '
  for file do
    uuencode "$file" "$(basename "$file")"
  done' sh {} +

Oder wenn Sie findunterstützen -execdir:

find "$dir" -ctime -1 -type f -name "abc*pdf*" -execdir uuencode {} {} \;

Mit Ihrer findUnterstützung -printfhätten Sie es wie folgt schaffen können:

find "$dir" -ctime -1 -type f -name "abc*pdf*" -printf '%p\0%f\0' |
  xargs -r0n2 uuencode

verwandte Informationen