将反斜杠文件名转换为目录

将反斜杠文件名转换为目录

要将一些数据从 Windows 上的程序移动到 Mac 上的同一程序,该程序有一个内置的备份工具。不幸的是,他们似乎从未测试过跨平台兼容性,因为它生成的 ZIP 文件的文件名如下:

Data\Shared\filename.extension
Data\Users\Ashley\filename.extension
etc etc

因此,我需要将这些反斜杠扩展名转换为它们的文件夹等效项。它们之间没有太多区别,所以我很乐意mv对它们执行命令,然后删除开头的“文件夹” - 但这就是我遇到的问题。

关于如何删除(例如)Data\Shared或通过根据文件名移动来快速执行的建议会很棒。谢谢

答案1

类似这样的事情应该可以让你改变BASE成你想要的任何基本路径。

#!/bin/bash
BASE="/tmp"
for file in *
do
    nf=$(echo "$file" | sed 's|\\|/|g')
    filename=$(basename "$nf")
    path=$(dirname "$nf")
    mkdir -p "$BASE/$path"
    cp "$file" "$BASE/$path/$filename"
done

我在 Linux 系统上完成了这个操作,但我希望它能在 OSX 上按预期运行。

相关内容