У меня есть список файлов: File_2011_1.txt
, File_2011_2.txt
, File_2011_3.txt
... File_2011_100.txt
; Я хочу обновить с 2011 по 2012 год во всех именах файлов.Переименование файлов в цикле
Следующая не работает:
for FILES in `ls`; do NEWNAME=`echo ${FILES} | sed -e 's/*2011*/*2012*/'`; echo ${FILES} ${NEWNAME}; done;
но это делает:
for FILES in `ls`; do NEWNAME=`echo ${FILES} | sed -e 's/File_2011*/File_2012*/'`; echo ${FILES} ${NEWNAME}; done;
Итак, почему подстановочный в до части файла я хочу изменить не работает?
Как ни странно, вы используете подстановочный знак, если не хотите, и 'ls', когда вы увидите [здесь] (http://mywiki.wooledge.org/BashPitfalls#for_i_in_.24.28ls_.2A.mp3 .29) для почему 'for Files in \' ls \ '...' - плохая идея. – potong