我将以下shell脚本的输出作为电子邮件。 那里有文件名时间大小。
pint文件名我得到的整个目录太长了。
如何只保留最后一个或两个目录名和文件名。 ?
#!/bin/bash
monitor_dir=/path/to/dir
email=me@me.com
files=$(find "$monitor_dir" -maxdepth 1 | sort)
IFS=$'\n'
while true
do
sleep 5s
newfiles=$(find "$monitor_dir" -maxdepth 1 | sort)
added=$(comm -13 <(echo "$files") <(echo "$newfiles"))
[ "$added" != "" ] &&
find $added -maxdepth 1 -printf '%Tc\t%s\t%p\n' |
mail -s "incoming" "$email"
files="$newfiles"
done
答案 0 :(得分:1)
这将打印路径中的最后两个目录以及文件名:
echo "/the/long/path/to/your/file" | awk -F/ '{printf "/";for (i=NF-2;i<=NF;i++){printf $i"/"}}'
控制修改循环变量初始化程序(即NF-2)的次数。
答案 1 :(得分:0)
也许这个
find $added -maxdepth 1 -printf '%Tc\t%s\t%p\n' |
awk '{printf "%s/%s\n", $(NF-1), $NF}' FS=/