如何在linux shell脚本输出中缩短文件路径

时间:2014-04-30 02:43:43

标签: linux bash shell

我将以下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 

2 个答案:

答案 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=/