根据名称将文件排序到子文件夹中

根据名称将文件排序到子文件夹中

我有几个从备份中恢复的文件,但其结构(文件位置)作为文件名。

例如:

C\Users\Welcome\Desktop\Doc1.docx
F\New folder\concerts\0904M002.WAV

我想编写一个脚本,逐个获取这些名称并创建相应的文件夹并将文件放在文件夹中。

例如:F\New folder\concerts\0904M002.WAV

--> 在当前目录下创建一个文件夹“F”,然后 cd 到 F 创建一个文件夹“New folder”,类似地创建“concerts”(或直接执行 mkdir F\New folder\concerts)

--> 将文件“F\New folder\concerts\0904M002.WAV”重命名为“0904M002.WAV”,并将其移动到新创建的文件夹“F\New folder\concerts\”

有人能帮我编写脚本吗?谢谢

答案1

使用以下 bash 脚本。

#!/bin/bash
for file in *\\*
do 
    destFile="${file//\\/\/}"
    destFolder="${destFile%/*}"
    [ -d "$destFolder" ] || mkdir -p "$destFolder"
    mv -v "$file" "$destFile"
done

代码基本上用 替换\源文件中的所有 以/获取目标文件路径。然后它获取文件的目标目录并使用 创建它mkdir -p。最后将文件复制到目标文件夹。

将代码写入文件(比如说script.sh),然后在终端中执行

$ chmod +x script.sh
$ ./script.sh

相关内容