Unix genius - удалить "." из набора имен файлов? - PullRequest
1 голос
/ 06 марта 2011

У меня есть количество файлов, несколько необъяснимо, но из-за смягчающих обстоятельств, я получаю "." (Точка И пробел), добавляемый в начале имени файла.

Я хотел бы написать bash-скрипт для удаления этого, но я не знаю, с чего начать.

Я могу получить список всех затронутых файлов по

find dir -name ".*"

Но это все, что я знаю. Кто-нибудь может мне помочь?

Ответы [ 3 ]

2 голосов
/ 06 марта 2011

Если у вас версия сценария Perl rename:

find dir -name '. *' -exec rename 's/^. //' {} \;
2 голосов
/ 06 марта 2011
find dir -type f -regex ".*/[.] .*" -exec rename ". " "" {} \;

Найти все в каталоге, где имя соответствует регулярному выражению ".*/[.] .*" - "Все, косая черта, точка, пробел, что угодно"

Для каждого найденного файла выполните: rename ". " "" filename, который изменит "." На "" в файле с именем filename

1 голос
/ 07 марта 2011
for fn in \.\ *; do mv -T "$fn" "${fn:2}"; done

-T для безопасности, т. Е. Обрабатывать "$ {fn: 2}" как файл, а не каталог.

(протестировано в bash)

...