4

Я знаю, что на это был в основном ответ, и автомат с сценарием оболочки (Sanitize Filenames) прекрасно работает, но мне нужно, чтобы он также делал все подпапки. И, если возможно, обрежьте имя файла до 50 символов, сохранив расширение файла. Я нашел строку кода bash, которая усекала файл, но также лишала расширения, и это плохо работает при переносе этих файлов с Mac на Windows.

Сценарий, как он есть, это

for f in "$1"/*; do
dir=$(dirname "$f")
file=$(basename "$f")
mv "$f" "${dir}/${file//[[:cntrl:]\\\/:*?\"<>|]/_}" 
done 

Я не против использования яблочного скрипта в automator для выполнения этой задачи.

1 ответ1

0

Вы можете использовать find . Опции в OSX/Darwin find немного отличающиеся от других * nix-вариантов, поэтому некоторые из этих функций могут быть вам недоступны, но вы поймете суть и сможете поиграть с опциями, которые у вас есть:

find -regextype posix-extended -regex '.*\/[^\/]*[[:cntrl:]\\:*?"<>|].*' -print \
  -exec mv "{}" "$(echo "{}" | perl -ane 'chomp; s/[[:cntrl:]\\:*?"<>|]//g; print' -)"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .