我是 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/