我是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
如何仅将文件名添加到变量中? 预先感谢。
答案 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上不可用。)