将最新的文件名获取到比特定时间更早的变量中

时间:2018-09-10 13:59:37

标签: linux shell unix

我是Linux的新手,需要你们的帮助。

我想在特定时间之前将最新的文件名修改为变量。

我能够从下面的命令中获取结果。但我同时获得文件修改时间和文件名。

find /home/administrator/ -not -path '*/\.*' -type f -mmin +100 -printf "%TY-%Tm-%Td %TT %p\n" | sort -nr | head -n 1

以下是以上命令的输出

2018-09-10 18:39:18.3099856630 /home/administrator/K.sh

所需的输出-> K.sh

如何仅将文件名添加到变量中? 预先感谢。

2 个答案:

答案 0 :(得分:2)

由于您已经在使用find命令的-printf选项,因此只需将所有格式替换为'%f',就可以获取路径(文件名)的最后一个元素:

find /home/administrator/ -not -path '*/\.*' -type f -mmin +100 -printf "%f\n"

如果必须以这种方式对结果进行排序,则可以在末尾附加一个正则表达式管道。可以通过多种方式完成,这是Perl的示例:

find /home/administrator/ -not -path '*/\.*' -type f -mmin +100 -printf "%TY-%Tm-%Td %TT %p\n" | sort -nr | head -n 1 | perl -lne 'print $1 if /.+\/(.+)/'

答案 1 :(得分:2)

很多选择,让我想到几个:

  • ... | sed 's/^.*\///'
  • ... | cut -d' ' -f3 | xargs basename

(我不熟悉printf选项。它是非标准的-也许仅GNU?在Mac上不可用。)