linux - 将最新的文件名放入比特定时间早的变量中

标签 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

我怎样才能将文件名只放入一个变量中? 提前致谢。

最佳答案

因为您已经在使用 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 /.+\/(.+)/'

关于linux - 将最新的文件名放入比特定时间早的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52259485/

相关文章:

linux - 迭代删除文件类型

linux - awk 在其他路径上运行时不起作用

c - 如何避免 C 容器服务器的用户定义库程序中出现 "exit"?

bash - 打印给定行号的文件行

linux - 在 Ubuntu 中执行 START-DFS.SH 时权限被拒绝

linux - chmod 777/的效果。 -R 带根

php - 服务器维护脚本使用 BASH 还是 PHP?

linux - 更改 while 循环内的变量

windows - 在 PATH 环境中拥有本地目录不安全?

shell - 更改 MacVim 默认 shell?