Назад | Перейти на главную страницу

Преобразование имен файлов с обратной косой чертой в каталоги

Чтобы переместить некоторые данные из программы в Windows в ту же программу на Mac, программа имеет встроенный инструмент резервного копирования. К сожалению, похоже, что они никогда не тестировали кросс-платформенную совместимость, так как создаваемый им ZIP-файл имеет следующие имена файлов:

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

Итак, мне нужно преобразовать эти расширения с обратной косой чертой в их эквивалент папки. Различий не так много, поэтому я с радостью сделаю mv команду на них, а затем удалить начало «папки» - но это то место, где я застрял.

Предложения по удалению (например) Data\Shared или сделайте это быстро, двигаясь по имени файла. Спасибо

Что-то вроде этого должно заставить вас измениться 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.