我可以使用file和magic( http://linux.die.net/man/5/magic ) 来覆盖其他一些已知格式的描述吗?
例如,我想描述以下格式:
那是“只是”文本文件
或者
那只是一个以幻数开头的压缩文件 BAM\1
?
你知道任何例子吗?
是否可以提供自定义 C 代码来测试文件而不是使用魔术格式?
我正在file针对 wallet.dat 文件(比特币保存其私钥的文件)运行,即使似乎没有任何可识别的标头或字符串,file仍然可以看出这是一个 Berkley DB 文件,即使我将其减少到 16 个字节。
我知道该文件正在应用某种规则或搜索某种序列来识别它。我想知道它在这里应用的规则是什么,以便我可以在我自己的程序中复制它。
我的问题如下:file(1) 和 magic(5) :描述其他格式。
我想描述一个 FASTA 序列(http://en.wikipedia.org/wiki/FASTA_format)
它可能是一个DNA 序列(只有 ATGC)
>header
ATGCTAGCATAGCATCGATGCTGTAGCTACGTAGCTACGTCTACG
Run Code Online (Sandbox Code Playgroud)
一个“神奇”的模式将是
>.*\n[ATGC]*
Run Code Online (Sandbox Code Playgroud)
或蛋白质序列(也包含 ATGC 的 ACDEFGHIKLMNPQRSTVWYBZX)
>header
AHITKLMNPQRGHIKLMNPQRC
Run Code Online (Sandbox Code Playgroud)
一个“神奇”的模式将是
>.*\n[ACDEFGHIKLMNPQRSTVWYBZX]*
Run Code Online (Sandbox Code Playgroud)
但是每当我使用这些正则表达式时,文件都会告诉我它是一种蛋白质,因为它与第二个正则表达式匹配。有没有办法对结果进行优先排序?有没有办法优先考虑,比如“如果匹配,不要尝试任何其他模式?”。
我有一个文件列表,我需要从该列表中找到所有图像文件。
例如,如果我的列表包含以下内容:
pidgin.tar.gz
photo01.jpg
picture01
screenshot.gif
invoice.pdf
Run Code Online (Sandbox Code Playgroud)
那么我只想选择:
photo01.jpg
picture01
screenshot.gif
Run Code Online (Sandbox Code Playgroud)
笔记:
feh无法显示,则不是图像)什么可能导致file(1)命令输出application/msword application/msword(是的,连续两次)作为某些.doc 文件的 MIME 类型?通常它只打印application/msword.
如果在没有--mime它的情况下运行,则会Microsoft Office Document在“普通”和“特殊”.doc 文件上打印。
我正在编写一个基于菜单的 bash 脚本,其中一个菜单选项是发送带有文本文件附件的电子邮件。我在检查我的文件是否为文本文件时遇到问题。这是我所拥有的:
fileExists=10
until [ $fileExists -eq 9 ]
do
echo "Please enter the name of the file you want to attach: "
read attachment
isFile=$(file $attachment | cut -d\ -f2)
if [[ $isFile = "ASCII" ]]
then
fileExists=0
else
echo "$attachment is not a text file, please use a different file"
fi
done
Run Code Online (Sandbox Code Playgroud)
我不断收到错误消息:分隔符必须是单个字符。
有时似乎标准file命令(我的 Ubuntu 系统上的 5.04)不够复杂(或者我只是使用错误,这很可能)。
例如,当我在一个.exe文件上运行它时,我非常肯定它包含一些存档,我希望输出如下:
$ improved-file foo.exe
foo.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
.zip archive included (just use unzip to extract)
Run Code Online (Sandbox Code Playgroud)
其他事宜:
file显示“数据”)包含存档的此类 .exe 文件的示例- 我猜测了一些存档格式并尝试了相应的解包命令,并使用了试错法 - 最终奏效了 - 但我更喜欢更自动检查面向工作流。
我想对目录中的所有图像进行循环。图像没有扩展名,所以我必须读取图像的第一个字节才能知道它的类型。循环最终应该是这样的。
for file in *
do
if [ file --mime-type -b ]
then
***
fi
done
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种仅查找 JPEG 文件的方法/由于我对 Linux 的了解有限,我来到了这一点:
find /file在每个找到的路径上执行命令xargs filefile命令的结果中包含一个 JPEG 字符串,我想也许可以通过 IF 语句以某种方式仅过滤 JPEG: If (JPEG 包含在文件命令的输出中) {show argument of file}再一次:
find / | xargs file | "If statement"
Run Code Online (Sandbox Code Playgroud)
您能否纠正我,给我一个提示如何执行任务或给出解决方案?
我想创建一个只包含一个二进制数的文件。我认为这touch可以用来创建一个空文件,但是有什么办法可以用二进制数填充它,例如10(十)?以及如何验证文件包含十的二进制值?
file-command ×10
files ×3
bash ×2
file-format ×2
shell-script ×2
command-line ×1
find ×1
mime-types ×1
scripting ×1
shell ×1