Как сделать, масса переименовывает?

"> Настроить> Преобразовать в проект Maven" отсутствует

25
задан Angelo Fuchs 30 September 2013 в 11:16
поделиться

7 ответов

Самое легкое решение состоит в том, чтобы использовать "mmv"

, который можно записать:

mmv "long_name*.txt" "short_#1.txt"

, Где "#1" заменяется тем, что подобрано первым подстановочным знаком. Так же № 2 заменяется вторым, и т.д.

, Таким образом, Вы делаете что-то как

mmv "index*_type*.txt" "t#2_i#1.txt"

Для переименования index1_type9.txt к t9_i1.txt

, mmv не является стандартным во многих дистрибутивах Linux, но легко найден в сети.

48
ответ дан nimrodm 28 November 2019 в 17:52
поделиться

При использовании zsh, можно также сделать это:

autoload zmv
zmv 'transform.php?dappName=Test&transformer=YAML&v_id=(*)' '$1.txt'
19
ответ дан d0k 28 November 2019 в 17:52
поделиться

Вы пишете довольно простой сценарий оболочки, в котором самая хитрая часть портит имя.

схема сценария легка (синтаксис удара здесь):

for i in 'transform.php?dappName=Test&transformer=YAML&v_id='*
do
    mv $i <modified name>
done

Изменение имени имеет много опций. Я думаю, что самой легкой является, вероятно, awk острота как

`echo $i  |  awk -F'=' '{print $4}'`

так...

for i in 'transform.php?dappName=Test&transformer=YAML&v_id='*
do
    mv $i `echo $i |  awk -F'=' '{print $4}'`.txt 
done

обновление

Хорошо, как указано ниже, это будет не обязательно работать на достаточно большой список файлов; * превысит предел длины командной строки. Так, тогда Вы используете:

$ find . -name 'transform.php?dappName=Test&transformer=YAML&v_id=*' -prune -print |
while read
do
    mv $reply `echo $reply |  awk -F'=' '{print $4}'`.txt 
done
13
ответ дан Charlie Martin 28 November 2019 в 17:52
поделиться

Попробуйте эти , переименовывают команду

, Или Вы могли передать результаты по каналу ls в жемчуг regex.

5
ответ дан brien 28 November 2019 в 17:52
поделиться

Можно использовать то, что Вы хотите преобразовать имя (жемчуг, sed, awk, и т.д.). Я буду использовать остроту Python:

for file in 'transform.php?dappName=Test&transformer=YAML&v_id='*; do 
    mv $file `echo $file | python -c "print raw_input().split('=')[-1]"`.txt;
done

Вот тот же сценарий полностью в Python:

import glob, os
PATTERN="transform.php?dappName=Test&transformer=YAML&v_id=*"

for filename in glob.iglob(PATTERN):
      newname = filename.split('=')[-1] + ".txt"
      print filename, '==>', newname
      os.rename(filename, newname)

примечание Стороны: у Вас была бы более легкая жизнь, сохраняющая страницы с правильным именем при захвате их...

4
ответ дан Federico A. Ramponi 28 November 2019 в 17:52
поделиться

Хорошо, необходимо быть в состоянии выполнить двоичный файл окон для этого.

, Но если можно работать Общий Командующий , сделайте это:

  1. Выбор все файлы с *, и хит ctrl-M

  2. В поле Search , вставляют "transform.php? dappName=Test& transformer=YAML& v_id ="

    (Отпуск Замена пустой)

  3. Нажимают Start

It не становится намного более простым, чем это. Можно также переименовать регулярные выражения использования через это диалоговое окно, и Вы видите предварительный просмотр в реальном времени того, как Ваши файлы будут переименованными.

-9
ответ дан Wouter van Nifterick 28 November 2019 в 17:52
поделиться
find -name '*v_id=*' | perl -lne'rename($_, qq($1.txt)) if /v_id=(\S+)/'
4
ответ дан jfs 28 November 2019 в 17:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: