是否有一个命令可以列出我今年修改的所有文件?

是否有一个命令可以列出我今年修改的所有文件?

我想列出今年修改过的所有文件并备份它们。有人知道是否有命令可以列出它们吗?提前谢谢。

答案1

如果你想查找文件,该find命令是一个强大的工具。你可以浏览目录并打印出符合某些测试的所有文件的路径:

# find all files in /some/directory whose name starts with 'project_b'
find /some/directory -iname 'project_b*'

# find all files in /some/directory which are owned by user 'joe'
find /some/directory -user joe

# find all files in /some/directory whose name starts with 'project_b'
# but which are *not* owned by user 'joe'
find /some/directory -iname 'project_b*' -and -not -user joe

要获取文件的最后修改日期(或更准确地说,文件内容的最后修改日期),您可以检查 mtime 时间戳。find对 mtime 有一个测试:

# find all files, whose mtime is less than 365 days back
find /some/directory -mtime -365

到目前为止,这为您提供了要备份的所有文件的列表。现在来看看备份本身。find带来了一个名为的选项-exec,它将命令应用于它找到的每个文件:

find /some/directory -iname '*.txt' -exec cp {} /somewhere/else \;

如果 find 命令找到test.txtother.txtsomething.txt,则该-exec部分将执行:

cp test.txt /somewhere/else
cp other.txt /somehwere/else
cp something.txt /somewhere/else

您可能已经看到,该{}文件已被替换为相关文件。

编辑:您可能需要找到一个比cp备份本身更好的解决方案,因为cp只需复制每个文件/somewhere/else而不保留目录结构。

总的来说,专用的备份程序可能是更好的选择。

答案2

假设您想将日期限制在当前年份,您可以使用-newermt日期。

这将在当前目录中查找 2016 年 11 月 1 日之后的任何文件,并将其复制到 /target,同时保持目录结构。

find . -newermt "2016-11-01 00:00:00" -exec cp --parents {} /target \;

cp 命令中添加的功能--parents允许您复制文件并保留其所在的文件夹。

例如...

ubuntu@ubuntu-xenial:~$ ls
percona-release_0.1-4.xenial_all.deb  t  t2  testdir  testfile2.vm  testfile.vm
ubuntu@ubuntu-xenial:~$ cp --parents t/output.txt testdir/
ubuntu@ubuntu-xenial:~$ ls testdir/
directory2  t

当我复制t/output.txt到它时,在其中testdir/创建了文件夹,然后复制了文件。ttestdir/

答案3

列出今年修改的所有文件及其详细信息:

find / -mtime -365 -ls

这将列出过去 365 天的所有内容。

要仅显示常规文件,请添加-type f到上述命令。

获取所有修改文件的列表(包含完整路径):

find / -mtime -365

cp您可以使用或scp等在任何地方备份这些文件。

添加-printf "%f\n"到命令末尾以仅打印文件名。

答案4

我使用了一些别名

alias last-24-hours='sudo find * -ctime -1 -type f'
alias last-week='sudo find * -ctime -7 -type f'

你可以创建一个别名

alias last-year='sudo find * -ctime -365 -type f'

但它可能会产生一个很长的列表。

-o-

如果你想要图形概览,你可以使用猴面包树,查看哪里有大量数据(以及在备份之前可以“彻底清理”哪些地方)。

-o-

另一种方法是使用可以进行增量备份的工具,例如同步。它会自动查找备份中需要添加或替换的内容。

相关内容