如何在linux shell脚本输出中缩短文件路径
问题描述:
我将下面的shell脚本输出为电子邮件。 其中的文件名称时间大小。如何在linux shell脚本输出中缩短文件路径
pint文件名我得到整个目录太长。
有些如何保留最后一个或两个目录名和文件名。 ?
#!/bin/bash
monitor_dir=/path/to/dir
[email protected]
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
答
打印在路径中的最后两个目录以及文件名:
echo "/the/long/path/to/your/file" | awk -F/ '{printf "/";for (i=NF-2;i<=NF;i++){printf $i"/"}}'
控制得到多少修改循环变量初始化(即NF-2)。
答
也许这
find $added -maxdepth 1 -printf '%Tc\t%s\t%p\n' |
awk '{printf "%s/%s\n", $(NF-1), $NF}' FS=/
我们怎么可以把这个技术在我发布的代码 – Readerlook