我想将配置从一个用户传输到另一个用户。但我不知道相关程序将其配置存储在哪个文件中。
为了找出配置的存储位置,我想更改其中一个设置,然后查找最近几分钟内发生更改的任何文件。
我知道,find . -mmin -10 -ls
但输出中有很多我希望结果按最后更改时间排序ls
。不幸的是,日期位于该命令输出的中间某处。
答案1
让我们看几个使用的例子find
:
使用
-ls
指令:$ find /var/log -maxdepth 1 -mmin -30 -ls 15533117 60 -rw-r--r-- 1 root wheel 60616 Jan 2 09:46 /var/log/daily.out 15955192 12 -rw-r----- 1 root admin 8638 Jan 2 10:00 /var/log/system.log 15870477 132 -rw-r----- 1 root admin 117797 Jan 2 09:45 /var/log/wifi.log 1081546 32088 -rw-r--r-- 1 root admin 31966363 Jan 2 09:46 /var/log/install.log
显然很难分类。
使用
-ls
和-printf
$ find /var/log -maxdepth 1 -mmin -30 -ls -printf '%T+' 15533117 60 -rw-r--r-- 1 root wheel 60616 Jan 2 09:46 /var/log/daily.out 2020-01-02+09:46:36.1361086600 15955192 12 -rw-r----- 1 root admin 8710 Jan 2 10:06 /var/log/system.log 2020-01-02+10:06:54.3077120650 15870477 132 -rw-r----- 1 root admin 117797 Jan 2 09:45 /var/log/wifi.log 2020-01-02+09:45:28.8952892010 1081546 32088 -rw-r--r-- 1 root admin 31966363 Jan 2 09:46 /var/log/install.log 2020-01-02+09:46:04.0508866900
上面打印的时间戳相当混乱下一个没有换行符的行。
仅使用
-printf
:我们将打印修改时间、制表符、路径名和换行符:$ find /var/log -maxdepth 1 -mmin -30 -printf '%T+\t%p\n' 2020-01-02+09:46:36.1361086600 /var/log/daily.out 2020-01-02+10:06:54.3077120650 /var/log/system.log 2020-01-02+09:45:28.8952892010 /var/log/wifi.log 2020-01-02+09:46:04.0508866900 /var/log/install.log
好的,很简单。让我们对它进行排序,以便最新的放在最上面
$ find /var/log -maxdepth 1 -mmin -30 -printf '%T+\t%p\n' | sort -r 2020-01-02+10:06:54.3077120650 /var/log/system.log 2020-01-02+09:46:36.1361086600 /var/log/daily.out 2020-01-02+09:46:04.0508866900 /var/log/install.log 2020-01-02+09:45:28.8952892010 /var/log/wifi.log
然后只打印路径名
$ find /var/log -maxdepth 1 -mmin -30 -printf '%T+\t%p\n' | sort -r | cut -f 2- /var/log/system.log /var/log/daily.out /var/log/install.log /var/log/wifi.log