Пакетное переименование файлов в Unix и откат - PullRequest
1 голос
/ 26 октября 2010

Я переименую несколько файлов (1234.xml, 9876.xml, 2345.xml и т. Д.) С расширением .xml, используя следующий код:

 for i in *.xml  
 do  
 mv $i $i.ab  
 done

становится 1234.xml.ab, 9876.xml.ab, 2345.xml.ab ... и т. Д.

Теперь я хочу переименовать его в 1234.xml.SD, 9876.xml.SD, 2345.xml.SD ... и т. Д.

Это 100 файлов.

Как этого можно достичь с помощью кода? Пожалуйста, сообщите.

Ответы [ 3 ]

1 голос
/ 26 октября 2010

Если вы используете bash, вы можете сделать:

for f in *.xml.ab; do
    mv "$f" "${f%.ab}.SD"
done

или просто используйте команду rename как:

rename 's/ab$/SD/' *.xml.ab
0 голосов
/ 26 октября 2010

Мне не ясно, хотите ли вы переименовать foo.xml.ab -> foo.xml или foo.xml.ab -> foo.xml.SD

foo.xml.ab-> foo.xml

for f in *.xml.ab; do
    mv "$f" "${f%.ab}"
done

foo.xml.ab -> foo.xml.SD

for f in *.xml.ab; do
    mv "$f" "${f/.ab/.SD}"
done
0 голосов
/ 26 октября 2010

Вы можете сделать это так:

for f in *.xml.ab; do
    mv $f `echo $f | sed 's/\.ab$//g'`
done
...