2011-01-22 3 views
0

этот вопрос несколько уникален среди других.
У меня есть каталог с кучей папок, и они называются с использованием периодов для разделения каждого слова.
такие как: foo.bar.2011.useless.words
последние два слова всегда бесполезны, поэтому я хотел бы усечь, начиная со второго по последний период.
не уверены в формулировках ...
большое спасибоскрипт bash для пакетного обрезания имен файлов в одном каталоге

ответ

1
for file in *.*.* 
do 
    mv "$file" "${file%.*.*}" 
done 
+0

Один несовершеннолетний критика: вы хотите использовать 'for file in *. *. * /' для ограничения соответствия шаблону только каталогам. Поскольку у вас есть это сейчас, вы встретите 'this.is.a.file' – SiegeX

+0

спасибо, что меня смущает:« для файла в * *. *. »Имеет значение, сколько«. »На самом деле находится в имя папки? Например, если имя папки имеет 6 или около того «.» в ней? – fightermagethief

+0

@bboyreason '*. *. *' соответствует любому файлу или папке с * не менее * двумя точками в названии. Я упомянул в своем комментарии к Ignacio, я бы использовал '*. *. * /', Поэтому он * только * соответствует папкам с не менее чем двумя точками в своем имени, а не файлами. – SiegeX

0

Если ваши папки с точками глубоки только один уровень, идти с ответом Игнасио. Однако, если у вас есть папки, которые вы хотите переименовать, которые существуют в поддирерах, таких как /toplevel/subdir1/foo.bar.baz.blah/, тогда вам нужно будет использовать команду find ниже. Если у вас нет Bash 4.x, в этом случае вы можете использовать опцию shopt -s globstar.

find /top/level/dir -type d -name '*.*.*' -exec sh -c 'for arg; do echo mv "$arg" "${arg%.*.*}"; done' _ {} + 

Я добавил echo там, так что вы можете сделать всухую без внесения каких-либо изменений. Удалите echo, если вы удовлетворены выходом и запустите его снова, чтобы изменения были постоянными.

Редактировать Удалены мой $tmp вар по безбожно красть Игнасио PE

+0

спасибо за помощь, ценные инструменты без сомнения, возможно, ответить на вопрос выше комментарий, если вы чувствуете, как он ... – fightermagethief

Смежные вопросы