我如何才能找出几分钟前更改了哪个文件?

我如何才能找出几分钟前更改了哪个文件?

我想将配置从一个用户传输到另一个用户。但我不知道相关程序将其配置存储在哪个文件中。

为了找出配置的存储位置,我想更改其中一个设置,然后查找最近几分钟内发生更改的任何文件。

我知道,find . -mmin -10 -ls但输出中有很多我希望结果按最后更改时间排序ls。不幸的是,日期位于该命令输出的中间某处。

答案1

让我们看几个使用的例子find

  1. 使用-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
    

    显然很难分类。

  2. 使用-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
    

    上面打印的时间戳相当混乱下一个没有换行符的行。

  3. 仅使用-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
    

相关内容