将新文件记录到目录中

将新文件记录到目录中

有没有一个工具可以让我了解最近新创建的文件?

使用分层文件系统的仍然常见的方式使得很难将文件保存在不同的位置,因此有时我将内容分类到一般主题文件夹中,有时将内容分类到直接相关的内容的位置,例如与目录中的某个工具相关的出版物二进制文件。

最好是一个工具,我可以问:

  • 创建/保存期限

  • 文件类型/名称/扩展名

  • 要排除/包含的目录的黑/白名单

答案1

支持此类操作的命令行工具是find

例子

find /path -iname '*.ext' # search for extension (don't forget the quotes)
find /path -mtime n       # search for last modified `n*24h` ago
find /path -atime n       # search for last accessed `n*24h` ago
find /path -newer ref     # newer than ref
find /path -size +100M    # larger than 100MB
find /path -perm 664      # example to search for files with a specific permission
find /path -type <t>      # search for file `f`, directory `d`, symbolic link `l` ...

为了询问有关文件类型的更多详细信息,我建议运行以下内容

find /path -type f -exec file '{}' \; | grep 'Vorbis audio'

我不知道有哪个工具(特别是 GUI 工具)的功能与find.

答案2

inotify如果您需要立即了解,请使用

如果您需要立即了解新创建的文件,您实际上可以使用inotifyLinux 上的 API 等待在目录或目录树中创建文件的事件(请参阅 参考资料man 7 inotify):

您可以将其与其他解决方案的一部分结合起来,以查找有关文件的详细信息。

观察文件创建的示例

下面,命令inotifywait -e create -m /path启动。当它在该行之后等待时,会在另一个终端上创建Watches established.一个新文件:foo/path

term1$ inotifywait -e create -m /path
Setting up watches.
Watches established.

term2$ touch /path/foo

term1$ inotifywait -e create -m /path
Setting up watches.
Watches established.
./ CREATE foo
^C

(前 3 行与上面重复)

如果没有-m( --monitor) 选项,则inotifywait在第一个事件后停止,这在脚本循环中很有用。

相关内容