如何在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)。

+0

我们怎么可以把这个技术在我发布的代码 – Readerlook

也许这

find $added -maxdepth 1 -printf '%Tc\t%s\t%p\n' | 
    awk '{printf "%s/%s\n", $(NF-1), $NF}' FS=/