列出所有存档文件

列出所有存档文件

在不知道文件扩展名的情况下,如何以递归方式获取文件夹中所有存档文件的列表?

答案1

您可以使用该file实用程序尝试根据一系列文件系统测试、魔术测试和语言测试对文件进行分类 - 例如

$ file pynauty-0.5.tar 
pynauty-0.5.tar: POSIX tar archive (GNU)

$ file opencv-2.4.10.zip
opencv-2.4.10.zip: Zip archive data, at least v1.0 to extract

在压缩文件上运行时,默认只是报告它包含“压缩数据”,但你可以使用开关改变该-z行为

 -z, --uncompress
         Try to look inside compressed files.

IE

$ file -b octave-4.0.0.tar.gz 
gzip compressed data, from Unix, last modified: Tue May 26 12:35:47 2015, max compression

然而

$ file -zb octave-4.0.0.tar.gz 
POSIX tar archive (gzip compressed data, from Unix, last modified: Tue May 26 12:35:47 2015, max compression)

基于此,您可以尝试在命令file -zb中运行find,并grep输入单词“ archive”:例如

find . -type f -exec sh -c 'file -zb "$1" | grep -q "archive"' _ {} \; -print

-b开关可防止文件名出现错误匹配。

答案2

您可以使用此命令检查没有扩展名的档案/文件的文件类型:

% file tar-latest            
tar-latest: XZ compressed data

或者另一个例子:

% file foo          
foo: Zip archive data, at least v2.0 to extract

列出所有档案

find . -type f -exec file {} \; | awk '/compressed|archive/'

例子

% find . -type f -exec file {} \; | awk '/compressed|archive/'
./tar-latest: XZ compressed data
./foo: Zip archive data, at least v2.0 to extract

相关内容