Переименование набора файлов в Linux - PullRequest
2 голосов
/ 12 марта 2011

У меня есть 100 файлов с именем sub1.txt, sub2.txt,..., sub100.txt. Мне нравится переименовывать их в all1.txt, all2.txt,..., all100.txt. Как это можно сделать в Linux (Unix)?

Спасибо за вашу помощь.

Ответы [ 6 ]

7 голосов
/ 12 марта 2011

Сценарий ниже переименует произвольное число файлов с шаблоном sub*.txt. Это также делает пробный прогон благодаря echo. Просто удалите echo, как только вы будете удовлетворены результатами.

#!/bin/bash

for file in sub*.txt; do
  echo mv "$file" "all${file#sub}"
done
2 голосов
/ 12 марта 2011

Использование версии util-linux-ng rename:

rename sub all sub*.txt

Использование версии сценария Perl rename:

rename 's/^sub/all/' sub*.txt
1 голос
/ 12 марта 2011
for i in `seq 1 100`; do mv sub$i.txt all$i.txt; done

или

for i in sub*.txt; do j=`echo $i|sed -e s/sub/all/`; mv $i $j; done
0 голосов
/ 12 марта 2011

Рубин (1,9 +)

ruby -e 'Dir["sub*.txt"].each {|x| File.rename(x, x.gsub(/^sub/,"all") ) }'
0 голосов
/ 12 марта 2011
for F in sub*.txt ; do mv $F all${F#sub}; done
0 голосов
/ 12 марта 2011

Всегда есть новый способ сделать это:

$ ls sub*.txt | tr -d "sub" | xargs -I{} mv sub{} all{}

Надеюсь, это поможет.

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