我想获取当前目录下所有文件的 MIME 类型。为什么这不起作用?我已经在 OSX 或 Linux 上测试过 bash。“文件”抱怨它找不到文件,但如果我用完全相同的路径运行它,它就可以工作。
$ find . -type f | xargs -n 1 -I FILE echo $(file --mime-type -b FILE)
ERROR: cannot open './foo.txt' (No such file or directory)
...
$ file --mime-type -b ./foo.txt
text/plain
Run Code Online (Sandbox Code Playgroud)
当然,在现实世界中,我不只是“回显”响应,我需要在另一个命令中使用 MIME 类型字符串。
这是我能解决的最简单的问题。我想我不了解xargs
文件名替换?
命令替换$(file --mime-type -b FILE)
在传递给 之前由 shell 执行xargs
,这就是为什么您没有看到您需要的内容。引用$(file --mime-type -b FILE)
并bash -c
通过 xargs传递给它
find . -type f | xargs -n 1 -I FILE bash -c 'echo $(file --mime-type -b FILE)'
Run Code Online (Sandbox Code Playgroud)