我有数百万个没有扩展名的文件,我想将它们分类到不同的文件夹中。我能够通过“文件”来识别文件,但最终我会得到许多可以手动处理的不同类型。我想使用“文件”的输出来 grep 即“Word”,然后将其移动到“office”文件夹中。我可以为单个文件类型编写它,但不能为我拥有的所有文件类型编写。如果那样我就缺少条件。我正在使用cygwin。任何人都可以帮助我告诉我如何做到这一点?谢谢你!
彼得
答案1
grep
您可以在 shell case 构造中使用简单的模式匹配来代替。例如:
#!/bin/sh
for f in *; do
[ -f "$f" ] || continue
ftype="$(file -b -- "$f")"
case $ftype in
*"shell script"*)
echo mv -- "$f" scripts/
;;
*"C source"*|*"C++ source"*)
echo mv -- "$f" src/
;;
.
.
.
*) printf '%s: skipping unrecognized type "%s"\n' "$f" "$ftype" >&2
;;
esac
done
目标目录必须存在(尽管使用 条件创建它们会很简单mkdir -p
)。echo
一旦您确信它做了正确的事情,就删除es。