Как переименовать все файлы в каталоге - PullRequest
0 голосов
/ 30 августа 2018

У меня есть файлы, такие как test.log.1, test.log.2, test.log.3 и т. Д.

Я хочу добавить дату в конец каждого файла и переименовать ее.

Как поступить?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

У меня проблемы с пониманием вашего требования. Какой будет выходной формат? Надеюсь, приведенная ниже команда поможет вам добавить дату в конец файла.

Исходное имя файла

enter image description here

rename "s/$/$(date +%Y%m%d)/" *

Обновлено имя файла

enter image description here

«rename» переименовывает имена файлов, предоставленные в соответствии с правилом, указанным в качестве первого аргумента. Здесь я упомянул $ в качестве первого аргумента, так как нам нужно добавить к последнему. (^ для первого символа)

0 голосов
/ 30 августа 2018

Не совсем ясно, каковы ваши требования, но, надеюсь, этого достаточно, чтобы вы начали.

Bash развернет глобус до списка имен, так что вы можете перебирать его напрямую. * для всех файлов в текущем каталоге, test.log.*, вероятно, более конкретно для ваших файлов.

date распечатает текущую дату, и вы можете захватить вывод команды в bash, используя $(...).

for f in test.log.*; do
    mv "$f" "$f.$(date -I)"
done

Полезно, когда такие циклы пишутся для размещения echo перед командами, чтобы он выводил их вместо запуска, и вы можете подтвердить, что он будет делать то, что вы ожидаете, прежде чем запускать его для реальный.

Запустите это и посмотрите, соответствуют ли команды ожидаемым:

for f in test.log.*; do echo mv "$f" "$f.$(date -I)"; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...