Динамическое изменение имени файла в linux bash - PullRequest
0 голосов
/ 26 октября 2018

Я хочу изменить имя файла «Domain_20181012230112.csv» на «Domain_12345_20181012230112.csv», где «Domain» и «12345» являются константами, в то время как 20181012230112 всегда будет меняться, но с фиксированной длиной.В Bash, как я могу это сделать

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Вы можете использовать mv в цикле for, например:

for file in Domain_??????????????.csv ; do ts=`echo ${file} | cut -c8-21`; mv ${file} Domain_12345_${ts}.csv; done

Учитывая один файл вашего примера, это по существу выполнит эту команду

mv Domain_20181012230112.csv Domain_12345_20181012230112.csv
0 голосов
/ 26 октября 2018

Если все, что вам нужно, это заменить Domain_ на Domain_12345_, тогда просто сделайте

for file in Domain_*; 
do
    mv "$file" "${file/Domain_/Domain_12345_}"
done

Вы можете сделать его еще короче, если знаете, что будет только одно подчеркивание:

...
    mv "$file" "${file/_/_12345_}"
...

См. подстановки строк для получения дополнительной информации.

0 голосов
/ 26 октября 2018

Вы можете просто использовать команду даты, чтобы получить информацию о дате и времени, которую вы хотите

date '+%Y-%m-%d %H:%M:%S'
# 2018-10-26 10:25:47

Чтобы затем использовать результат в имени файла, вы можете поместить его в ``, чтобы оценить его в строке, например, вы можете запустить

echo "Domain_12345_`date '+%Y-%m-%d %H:%M:%S'`"
# Domain_12345_2018-10-26 10:29:17

Вы можете использовать справочную страницу даты, чтобы выяснить, какую опцию можно добавить за миллисекунды.

man date

Существуют различные параметры, например% m и% d, например, которые всегда имеют начальные нули, если необходимо, поэтому длина имени файла остается постоянной.

Чтобы затем переименовать файл, вы можете использовать команду mv (move)

mv "Domain_20181012230112.csv" "Domain_12345_`date '+%Y-%m-%d %H:%M:%S'`.csv"

Удачи с остальным упражнением!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...