我是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
如何只将文件名放入变量中?提前谢谢。
发布于 2018-09-10 14:11:05
由于您已经使用了-printf选项的find命令,所以只需将所有这些格式替换为‘%f’,就可以得到路径的最后一个元素(文件名):
find /home/administrator/ -not -path '*/\.*' -type f -mmin +100 -printf "%f\n"
如果结果必须以这种方式排序,则可以在最后追加regex管道。它可以以太多的方式完成,下面是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 /.+\/(.+)/'
发布于 2018-09-10 14:17:01
有很多选择,几个人突然想到:
... | sed 's/^.*\///'
... | cut -d' ' -f3 | xargs basename
(我不熟悉printf
选项。这是不标准的--也许是GNU专用的?--而且Mac上也没有。)
https://stackoverflow.com/questions/52259485
复制相似问题