Удалить все недопустимые символы из всех имен файлов в данной папке
Я пытаюсь создать какую-то форму процесса, которая позволит пользователю выбрать папку и перебрать все файлы и очистить любые слэши, дефисы и т. Д. От соответствующих имен файлов.
Я программирую на Windows, но это немного из моей глубины на OSX.
Я нашел это (процесс автоматизации для удаления плохих символов из одной строки), но мне нужно что-то, что будет повторяться и легко использоваться и распространяться между пользователями в сети Mac.
Спасибо за любое предложение помочь
2 ответа
Единственными символами, которые не допускаются в именах файлов в OS X, являются NUL и либо косая черта ASCII, либо двоеточие ASCII в зависимости от контекста. Символы, которые в Finder отображаются в виде прямой косой черты, в оболочках отображаются как двоеточия, и наоборот.
Вы можете использовать команды оболочки, как это, хотя:
for f in *;do mv "$f" "${f//[^0-9A-Za-z.]}";done
find . -type f|while read f;do b=${f##*/};mv "$f" "${f%/*}/${b//[^[:alnum:].]}";done
brew install rename;find . -type f -exec rename 's/[^0-9A-Za-z.\/]/-/g;s/-+/-/g' {} \;
rename -z *
Или просто используйте приложение, такое как Name Mangler:
Я обернул это в приложение, чтобы вы могли легко распространять его. Он запросит папку, а затем очистит имена файлов.
Если эта ссылка не работает, вы можете создать следующее приложение в Automator:
Все, что вам нужно сделать, это:
- Запросить элементы поиска (вы должны разрешить только папки)
- Установите этот результат как переменную
Запустите сценарий оболочки (вам нужно передать ввод в качестве аргументов, а не в stdin)
for f in "$1"/*; do dir="$(dirname "$f")" file="$(basename "$f")" mv -- "$f" "${dir}/${file//[^0-9A-Za-z.]}" done