for file in * do mv "$file" "$file".tmp && mkdir "$file" && mv "$file".tmp "$file"/"$file" done
否则(只是轻轻测试):
find . -maxdepth 1 -type f -exec mv '{}' '{}'.tmp \; -exec mkdir '{}' \; -exec mv '{}'.tmp '{}'/'{}' \;
这在我的测试目录中有一些任意命名的文件,其中一些带有空格.