Linux 根据文件类型对文件进行排序

Linux 根据文件类型对文件进行排序,linux,bash,shell,zsh,Linux,Bash,Shell,Zsh,在一个高清问题和一些工作之后,我有一堆名为f1234、f1235等的文件 我的目标是根据文件类型对这些文件进行排序。例如,我想移动PDF目录中的所有PDF文件 对于一个文件,我可以这样做:文件f1234,如果它是PDF,我可以mv f1234 pdfs/。但我有成千上万的文件。。。你能帮我用bash或zsh命令一次对所有PDF文件进行排序吗?谢谢这里的难点在于可靠地将文件的输出转换为目录名。我认为最好的候选是文件的mime类型,而不是文件的可读输出。我会使用类似于: mkdir sorted f

在一个高清问题和一些工作之后,我有一堆名为f1234、f1235等的文件

我的目标是根据文件类型对这些文件进行排序。例如,我想移动PDF目录中的所有PDF文件


对于一个文件,我可以这样做:文件f1234,如果它是PDF,我可以mv f1234 pdfs/。但我有成千上万的文件。。。你能帮我用bash或zsh命令一次对所有PDF文件进行排序吗?谢谢

这里的难点在于可靠地将文件的输出转换为目录名。我认为最好的候选是文件的mime类型,而不是文件的可读输出。我会使用类似于:

mkdir sorted
for f in f*
do
  d=$(file -b --mime-type "$f" | tr / -)
  mkdir -p "sorted/$d"
  mv "$f" "sorted/$d/"
done

显然,在您的文件上运行它之前,我会对此进行一点测试,但与之非常接近的东西应该会起作用。

这里最难的部分是可靠地将文件的输出转换为目录名。我认为最好的候选是文件的mime类型,而不是文件的可读输出。我会使用类似于:

mkdir sorted
for f in f*
do
  d=$(file -b --mime-type "$f" | tr / -)
  mkdir -p "sorted/$d"
  mv "$f" "sorted/$d/"
done

显然,在您的文件上运行它之前,我会对此进行一些测试,但与之非常接近的东西应该可以工作。

对于f中的f*;PDF格式的do case$file$f echo/bin/mv$f/path/to/PDF/dir/$f.PDF;;*echo不是PDF$f 1>&2;;以撒;完成。仔细检查输出,如果看起来正常,则删除PDF文件盒上的回声。当文件f1234为PDF时,您必须更改PDF格式以匹配其实际输出。如果有空格,Dbl将引用匹配字符串。祝你好运;PDF格式的do case$file$f echo/bin/mv$f/path/to/PDF/dir/$f.PDF;;*echo不是PDF$f 1>&2;;以撒;完成。仔细检查输出,如果看起来正常,则删除PDF文件盒上的回声。当文件f1234为PDF时,您必须更改PDF格式以匹配其实际输出。如果有空格,Dbl将引用匹配字符串。祝你好运.file-bi$f | cut-d''-f1 | tr/-可以缩短为file-b-mime类型$f | tr/-。啊,这样更好!我将更改答案以反映这一点。file-bi$f | cut-d''-f1 | tr/-可以缩短为file-b-mime类型$f | tr/-。啊,这样更好!我将更改答案以反映这一点。