У меня есть 100 файлов с именем sub1.txt, sub2.txt,..., sub100.txt. Мне нравится переименовывать их в all1.txt, all2.txt,..., all100.txt. Как это можно сделать в Linux (Unix)?
sub1.txt, sub2.txt,..., sub100.txt
all1.txt, all2.txt,..., all100.txt
Спасибо за вашу помощь.
Сценарий ниже переименует произвольное число файлов с шаблоном sub*.txt. Это также делает пробный прогон благодаря echo. Просто удалите echo, как только вы будете удовлетворены результатами.
sub*.txt
echo
#!/bin/bash for file in sub*.txt; do echo mv "$file" "all${file#sub}" done
Использование версии util-linux-ng rename:
rename
rename sub all sub*.txt
Использование версии сценария Perl rename:
rename 's/^sub/all/' sub*.txt
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
Рубин (1,9 +)
ruby -e 'Dir["sub*.txt"].each {|x| File.rename(x, x.gsub(/^sub/,"all") ) }'
for F in sub*.txt ; do mv $F all${F#sub}; done
Всегда есть новый способ сделать это:
$ ls sub*.txt | tr -d "sub" | xargs -I{} mv sub{} all{}
Надеюсь, это поможет.