我正在尝试查找一个(非常旧的)文件,我确信它在我的 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
它会输出结果,包括“正常”文件和档案中的文件。