我必须使用命令“find”将文件复制到具有其类型名称的文件夹中。有很多文件和很多文件夹。我尝试了命令:
find ./find -type f -exec bash -c ' file -b "$1"|cut -d " " -f 1 ' none {} \;
但是当我使用“|”时,我不知道如何使用 mkdir 来创建文件夹。
我想到了两个命令。首先根据文件类型创建文件夹。其次将文件复制到此文件夹。
但是我如何才能创建这个文件夹呢?
答案1
使用文件剪切表达式来确定目录名称:
find . -type f -exec bash -c 'd="../$(file -b "$1"|cut -d " " -f 1)"; mkdir -p "$d"; cp "$1" "$d" ' none {} \;
怎么运行的
d=../$(file -b "$1"|cut -d " " -f 1)
这将找到与文件类型对应的目录名称。我添加了
../
这些以将它们放在父目录下。您可能希望将它们放在其他地方。mkdir -p "$d"
如果目录不存在则创建该目录。
cp "$1" "$d"
这会将文件复制到目录。