2010-11-22 4 views
0

Я надеюсь, что кто-то может мне помочь, мне нужно удалить пробелы (не заменять символами подчеркивания) из нескольких тысяч файлов в системе с помощью cygwin. Могу ли я сделать это из оболочки, используя rename или mv?Как удалить пробелы из многих имен файлов в Cygwin

В настоящее время:

файл one.mp3
файл two.mp3

Все файлы должны стать:

fileone.mp3

filetwo.mp3

Благодаря

ответ

1

По умолчанию Cygwin оболочки Bash, так что ...

Попробуйте эту командную строку, заменив $ DIR с каталогом, под которым вы хотите выполнить преобразование сказал, и проверьте вывод:

find $DIR -type f -name '* *' | while read f; do d="${f%/*}"; f="${f##*/}"; echo mv "$d/$f" "$d/${f// }"; done 

Если вы выполняются команды, которые будут выполняться, просто удалите эхо до mv и повторите, чтобы выполнить фактическое переименование. Обратите внимание, что это будет только переименование файлов, но не каталогов.

+0

Прекрасное спасибо! :) – GWC

+1

Я всегда удивляюсь, как простые вещи могут быть настолько запутаны в оболочках UNIX ... – Joey

0

В дополнение к выше ответа, чтобы изменить имя файла, вот код, чтобы изменить имена каталогов:

find $DIR -type d -name '* *' | while read f; do d="${f%/*}"; f="${f##*/}"; echo mv "$d/$f" "$d/${f// }"; done 

Единственным отличием является четвертый аргумент от начала строки. Буква «f» заменяется на «d», соответствующей файлу и каталогу соответственно.