2014-11-16 3 views
0

Я создаю скрипт для переименования 3-х файлов в directotry, если файлы существуютсценарий для переименования файлов в каталоге

для примера. У меня есть файлы, как

customer.txt 
account.txt 
reference.txt 

нужно переименовать их

customer_arrivaldate.txt 
account_arrivaldate.txt 
reference_arrivaldate.txt 

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

Иам делать что-то вроде

for var1 in `cat ${directory}file1.txt` 
do 
    file_name=${var1}_arrivaldate.txt 

Мне нужно изменить их прямо, пожалуйста, предложите некоторые изменения

+0

Вы уверены в reference_arrival .текст? Вы имеете в виду reference_arrivaldate.txt здесь? Мой ответ добавляет strips .txt и добавляет _arrivaldate.txt ко всем .txt-файлам в текущий каталог. – mattias

+0

@mattias :) отредактировал, спасибо – Naaz

+0

ОК круто, тогда я уверен, что мое решение отлично работает для вас. – mattias

ответ

1

Это может быть достигнуто с помощью следующего:

#!/bin/bash 
dateVar="2014-11-16" 
for file in *.txt ; do mv $file ${file//.txt/_$dateVar.txt} ; done 

Объяснение: Все файлы в текущем каталоге, заканчивающейся .txt будет переименован в $ имя_файла -txt + dateVar + .txt

+0

@ mattias, файлы будут поступать ежедневно в один и тот же каталог, мне нужно только переименовать файлы определенных дней. Если я использую * .txt, он переименовывает все файлы в этом каталоге, что не является обязательным. – Naaz

+0

@Naaz: Ну, эта информация вроде бы не в вашей первоначальной постановке проблемы :) Нужно ли вам слушать новые файлы? Или вручную запустить скрипт? Если выслушаете, я бы рекомендовал что-то вроде http://man7.org/linux/man-pages/man7/inotify.7.html. Если ручной запуск вашего сценария в порядке, я думаю, вам нужно отфильтровать файлы, которые вы меняете именами, на основе некоторых вещей типа TODAYSDATE-ish. – mattias

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