在不知道文件扩展名的情况下,如何以递归方式获取文件夹中所有存档文件的列表?
答案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