我知道我可以使用类似的东西, mv *zip zip/
但如果不存在,我想自动创建每个文件夹并将我的所有文件移动到它们。使用下面的代码,我必须对所有内容进行硬编码。有没有办法自动化这个。就像首先获取文件的所有扩展名,然后创建文件夹(如果不存在)并根据文件类型将文件移动到其中,例如 png 到图像/png 和 mp3 到音频/mp3 或 pdf 到 Documents/pdf。
find . -name "*.mp4" -exec mv "{}" ./Videos \;
Edit-1 我已经想通了,但我不想移动 .sh 文件如何从特定元素的数组中删除,并将 png、jpg 到 images/png、images/jpg 和 mp3 到 Audio/mp3 或pdf 到文档/pdf。
array=($(find . -type f | sed 's/.*\.//' | sort | uniq ))
for dir in "${array[@]}"; do
[[ ! -d "$dir" ]] && mkdir "$dir"
find . -name "*.$dir" -exec mv "{}" ./"$dir" \;
done
根据文件类型移动文件
您可以批量创建目录、移动文件,然后删除空目录。
基于文件扩展名移动文件要简单得多,但这不是所要求的。
为了实现所描述的,可以使用 find 生成的文件列表进行修改,循环读取一段时间并对文件 ext 进行几次测试以移动到目录
使用它来组织您的文件感谢cmak-fr