Linux:如何将具有相同名称、diff-ext.的文件移动到自己的文件夹中



我有这样的文件此列表是我的文件示例,请注意,实际文件的顺序并不成功。

file1.a
file2.a
file1.b
file2.b
...

有些扩展名是.c,但不是所有的

我该如何将这些文件移动到它们自己的命名文件夹中。

我试过这个

find . -type f -print0 | xargs -0 -l sh -c 'mkdir "${1%.*}" && mv "$1" "${1%.*}"' sh

但它并没有按预期工作,即它创建了文件夹,但不会将相同名称、不同扩展名的第二个文件放在同一文件夹中。

mkdir: cannot create directory ‘./file1’: File exists
mkdir: cannot create directory ‘./file2’: File exists
mkdir: cannot create directory ‘./file3’: File exists

您应该使用mkdir -p,如果目录存在,它不会抱怨(并破坏&&)(如果不存在,它还会创建父目录)。

用于$(ls文件[0-9].[a-z])中的FILE做DIRNAME=$(echo$FILE |剪切-c1-5)[-d$DIRNAME]||mkdir$DIRNAMEmv${FILE}*$DIRNAME已完成这将为您提供:$ls文件1文件2文件1:文件1.a文件1.b文件1.c文件2:文件2.a文件2.b文件2.c

最新更新