有没有一种方法可以同时考虑档案内容来搜索文件?

有没有一种方法可以同时考虑档案内容来搜索文件?

我正在尝试查找一个(非常旧的)文件,我确信它在我的 NAS 上的某个地方。不幸的是,我的一些旧文件存储在 tar.gz、zip 或 7z 中。

有什么方法可以搜索包括这些档案内容在内的所有文件和文件夹?

也许find或者locate可以被指示考虑这些档案并在目录树的路径上查看内部?

答案1

您可以按如下方式在每种特定的档案类型中进行搜索:

cd /dir/where/you/want/to/start/search
find . -iname '*.zip' -exec unzip -l {} \; | grep 'file_pattern'
find . -iname '*.tar.gz' -exec tar tvf {} \; | grep 'file_pattern'
find . -iname '*.7z' -exec 7z l {} \; | grep 'file_pattern'

您可以通过始终从当前目录开始搜索并接受文件匹配模式(可以包括正则表达式,也可以只是文件名的全部或部分)作为命令行参数来简化其使用:

在可执行路径(例如 /usr/local/bin)中创建一个脚本(例如名为“arcsearch”),确保“chmod +x”使其可执行,内容如下:

find . -iname $1
find . -iname '*.zip' -exec unzip -l {} \; | grep $1
find . -iname '*.tar.gz' -exec tar tvf {} \; | grep $1
find . -iname '*.7z' -exec 7z l {} \; | grep $1

然后你只需输入:

arcfind whatever_you_want

它会输出结果,包括“正常”文件和档案中的文件。

相关内容