У меня есть эти файлы:
JE.TR21201610011612514806.47250728
JE.TR21201610011613514807.91514463
JE.TR21201610011614514808.4107721050
JE.TR21201610011626514818.3578493139
JE.TR21201610011627514819.1032212591
JE.TR21201610011628514820.3663420052
JE.TR21201610011629514821.3388683091
Как их переименовать?
JE.TR21201610011612514806
JE.TR21201610011613514807
JE.TR21201610011614514808
JE.TR21201610011624514817
JE.TR21201610011626514818
JE.TR21201610011627514819
JE.TR21201610011628514820
JE.TR21201610011629514821
Одна команда, которую я использую довольно часто, это: vidir. vi или vim для файлов и vidir для каталогов.
Если вы выполняете vidir и команда get не найдена, вам нужно установить пакет moreutils:
sudo apt-get install moreutils
Вернуться к вашему делу:
Перейти к каталогу были файлы: cd path-to-files Тип команды: vidir и нажмите ENTER. Теперь вы увидите весь список со всеми файлами , введите эту команду: :1,$ s/\.\d*$//g (она ищет точку, за которой следуют цифры, и удаляет все до конца). Чтобы выйти и сохранить тип: :xСм. также http://vimregex.com/
Вот быстрый способ сделать это в Python:
$ tree
.
├── JE.TR21201610011612514806.47250728
├── JE.TR21201610011613514807.91514463
├── JE.TR21201610011614514808.4107721050
├── JE.TR21201610011626514818.3578493139
├── JE.TR21201610011627514819.1032212591
├── JE.TR21201610011628514820.3663420052
└── JE.TR21201610011629514821.3388683091
0 directories, 7 files
$ python -c 'import os,sys; map(lambda x: os.rename(x,x[0:x.rfind(".")]) , sys.argv[1:])' JE.*
$ tree
.
├── JE.TR21201610011612514806
├── JE.TR21201610011613514807
├── JE.TR21201610011614514808
├── JE.TR21201610011626514818
├── JE.TR21201610011627514819
├── JE.TR21201610011628514820
└── JE.TR21201610011629514821
Есть несколько ключевых моментов в том, как это работает:
мы передаем все имена файлов через JE.* glob и затем обратитесь к ним через sys.argv[1:]. map() позволяет нам выполнять функцию lambda на любом фрагменте списка sys.argv[1:]. функция lambda, которую мы здесь имеем, использует функцию os.rename(old,new) для фактического переименования каждого элемента в списке x[0:x.rfind(".")] - фактически срез (или подстрока). Используя функцию .rfind(), мы находим индекс первого вхождения ., начиная с правой стороны строки (т. Е. С конца). Таким образом, фрагмент списка можно читать как x[0:<index of the last dot>]Любое из
$ rename -n 's/\.\d*$//' JE.*
rename(JE.TR21201610011612514806.47250728, JE.TR21201610011612514806)
rename(JE.TR21201610011613514807.91514463, JE.TR21201610011613514807)
rename(JE.TR21201610011614514808.4107721050, JE.TR21201610011614514808)
rename(JE.TR21201610011626514818.3578493139, JE.TR21201610011626514818)
rename(JE.TR21201610011627514819.1032212591, JE.TR21201610011627514819)
rename(JE.TR21201610011628514820.3663420052, JE.TR21201610011628514820)
rename(JE.TR21201610011629514821.3388683091, JE.TR21201610011629514821)
или
$ prename -n 's/\.\d*$//' JE.*
JE.TR21201610011612514806.47250728 renamed as JE.TR21201610011612514806
JE.TR21201610011613514807.91514463 renamed as JE.TR21201610011613514807
JE.TR21201610011614514808.4107721050 renamed as JE.TR21201610011614514808
JE.TR21201610011626514818.3578493139 renamed as JE.TR21201610011626514818
JE.TR21201610011627514819.1032212591 renamed as JE.TR21201610011627514819
JE.TR21201610011628514820.3663420052 renamed as JE.TR21201610011628514820
JE.TR21201610011629514821.3388683091 renamed as JE.TR21201610011629514821
или
$ mmv -n "JE.*.*" JE.#1
JE.TR21201610011612514806.47250728 -> JE.TR21201610011612514806
JE.TR21201610011613514807.91514463 -> JE.TR21201610011613514807
JE.TR21201610011614514808.4107721050 -> JE.TR21201610011614514808
JE.TR21201610011626514818.3578493139 -> JE.TR21201610011626514818
JE.TR21201610011627514819.1032212591 -> JE.TR21201610011627514819
JE.TR21201610011628514820.3663420052 -> JE.TR21201610011628514820
JE.TR21201610011629514821.3388683091 -> JE.TR21201610011629514821
(удалите -n, чтобы завершить действие)
или
$ for f in JE.*; do echo mv "$f" "${f%.*([0-9])}"; done
mv JE.TR21201610011612514806.47250728 JE.TR21201610011612514806
mv JE.TR21201610011613514807.91514463 JE.TR21201610011613514807
mv JE.TR21201610011614514808.4107721050 JE.TR21201610011614514808
mv JE.TR21201610011626514818.3578493139 JE.TR21201610011626514818
mv JE.TR21201610011627514819.1032212591 JE.TR21201610011627514819
mv JE.TR21201610011628514820.3663420052 JE.TR21201610011628514820
mv JE.TR21201610011629514821.3388683091 JE.TR21201610011629514821
(удалите echo, чтобы завершить действие).
Простым способом переименования файлов и папок является команда mv (сокращенно от «move»). Его основная цель - перемещать файлы и папки, но также может переименовывать их, поскольку действие переименования файла интерпретируется файловой системой как перенос ее из одного имени в другое.
Синтаксис:
mv (option) file1.ext file2.ext
где file1.ext - это «старое» имя файла, а file2.ext - новое имя.
Вот быстрый способ сделать это в Python:
$ tree
.
├── JE.TR21201610011612514806.47250728
├── JE.TR21201610011613514807.91514463
├── JE.TR21201610011614514808.4107721050
├── JE.TR21201610011626514818.3578493139
├── JE.TR21201610011627514819.1032212591
├── JE.TR21201610011628514820.3663420052
└── JE.TR21201610011629514821.3388683091
0 directories, 7 files
$ python -c 'import os,sys; map(lambda x: os.rename(x,x[0:x.rfind(".")]) , sys.argv[1:])' JE.*
$ tree
.
├── JE.TR21201610011612514806
├── JE.TR21201610011613514807
├── JE.TR21201610011614514808
├── JE.TR21201610011626514818
├── JE.TR21201610011627514819
├── JE.TR21201610011628514820
└── JE.TR21201610011629514821
Есть несколько ключевых моментов в том, как это работает:
мы передаем все имена файлов через JE.* glob и затем обратитесь к ним через sys.argv[1:]. map() позволяет нам выполнять функцию lambda на любом фрагменте списка sys.argv[1:]. функция lambda, которую мы здесь имеем, использует функцию os.rename(old,new) для фактического переименования каждого элемента в списке x[0:x.rfind(".")] - фактически срез (или подстрока). Используя функцию .rfind(), мы находим индекс первого вхождения ., начиная с правой стороны строки (т. Е. С конца). Таким образом, фрагмент списка можно читать как x[0:<index of the last dot>]Любое из
$ rename -n 's/\.\d*$//' JE.*
rename(JE.TR21201610011612514806.47250728, JE.TR21201610011612514806)
rename(JE.TR21201610011613514807.91514463, JE.TR21201610011613514807)
rename(JE.TR21201610011614514808.4107721050, JE.TR21201610011614514808)
rename(JE.TR21201610011626514818.3578493139, JE.TR21201610011626514818)
rename(JE.TR21201610011627514819.1032212591, JE.TR21201610011627514819)
rename(JE.TR21201610011628514820.3663420052, JE.TR21201610011628514820)
rename(JE.TR21201610011629514821.3388683091, JE.TR21201610011629514821)
или
$ prename -n 's/\.\d*$//' JE.*
JE.TR21201610011612514806.47250728 renamed as JE.TR21201610011612514806
JE.TR21201610011613514807.91514463 renamed as JE.TR21201610011613514807
JE.TR21201610011614514808.4107721050 renamed as JE.TR21201610011614514808
JE.TR21201610011626514818.3578493139 renamed as JE.TR21201610011626514818
JE.TR21201610011627514819.1032212591 renamed as JE.TR21201610011627514819
JE.TR21201610011628514820.3663420052 renamed as JE.TR21201610011628514820
JE.TR21201610011629514821.3388683091 renamed as JE.TR21201610011629514821
или
$ mmv -n "JE.*.*" JE.#1
JE.TR21201610011612514806.47250728 -> JE.TR21201610011612514806
JE.TR21201610011613514807.91514463 -> JE.TR21201610011613514807
JE.TR21201610011614514808.4107721050 -> JE.TR21201610011614514808
JE.TR21201610011626514818.3578493139 -> JE.TR21201610011626514818
JE.TR21201610011627514819.1032212591 -> JE.TR21201610011627514819
JE.TR21201610011628514820.3663420052 -> JE.TR21201610011628514820
JE.TR21201610011629514821.3388683091 -> JE.TR21201610011629514821
(удалите -n, чтобы завершить действие)
или
$ for f in JE.*; do echo mv "$f" "${f%.*([0-9])}"; done
mv JE.TR21201610011612514806.47250728 JE.TR21201610011612514806
mv JE.TR21201610011613514807.91514463 JE.TR21201610011613514807
mv JE.TR21201610011614514808.4107721050 JE.TR21201610011614514808
mv JE.TR21201610011626514818.3578493139 JE.TR21201610011626514818
mv JE.TR21201610011627514819.1032212591 JE.TR21201610011627514819
mv JE.TR21201610011628514820.3663420052 JE.TR21201610011628514820
mv JE.TR21201610011629514821.3388683091 JE.TR21201610011629514821
(удалите echo, чтобы завершить действие).
Простым способом переименования файлов и папок является команда mv (сокращенно от «move»). Его основная цель - перемещать файлы и папки, но также может переименовывать их, поскольку действие переименования файла интерпретируется файловой системой как перенос ее из одного имени в другое.
Синтаксис:
mv (option) file1.ext file2.ext
где file1.ext - это «старое» имя файла, а file2.ext - новое имя.
Одна команда, которую я использую довольно часто, это: vidir. vi или vim для файлов и vidir для каталогов.
Если вы выполняете vidir и команда get не найдена, вам нужно установить пакет moreutils:
sudo apt-get install moreutils
Вернуться к вашему делу:
Перейти к каталогу были файлы: cd path-to-files Тип команды: vidir и нажмите ENTER. Теперь вы увидите весь список со всеми файлами , введите эту команду: :1,$ s/\.\d*$//g (она ищет точку, за которой следуют цифры, и удаляет все до конца). Чтобы выйти и сохранить тип: :xСм. также http://vimregex.com/