ファイル拡張子を知らなくても、フォルダ内のすべてのアーカイブファイルのリストを再帰的に取得するにはどうすればよいですか?
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.
つまり.
$ 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)
これに基づいて、find
コマンド内でfile -zb
を実行して、単語 "grep
"をarchive
ingすることができます。
find . -type f -exec sh -c 'file -zb "$1" | grep -q "archive"' _ {} \; -print
-b
スイッチは、ファイル名の誤った一致を防ぎます。
次のコマンドを使用して、拡張子のないアーカイブ/ファイルのファイルタイプを確認できます。
% 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