Parece que você está esquecendo de passar os arquivos para rename
.
rename 456 555 *456*
Eu já tive um script que faria o seguinte. Renomearia parte de um nome de arquivo de vários arquivos no diretório atual:
Por exemplo:
rename variable1 variable2
rename 456 555
Entrada:
testa456testa
sama456sama
apple456applea
johna_456_johna
davida_456_davidb
Saída:
testa555testa
sama555sama
apple555applea
johna_555_johna
davida_555_davidb
Eu não tenho mais o script e ainda sou novo no Unix. Eu preciso de um script, que eu possa usar a partir da linha de comando.
O que eu faço agora é:
Eu listo os arquivos "ls * (nomes de arquivo)" em um nome de arquivo temporário. Então eu faço uma pesquisa% / s / 456/555 / g. Em seguida, movo todos os nomes de arquivos antigos para novos nomes de arquivos. Consegui fazer isso em uma linha de comando "renomear $ 1 a $ 2". Então, em qualquer diretório eu colocaria para renomear o meio dos nomes dos arquivos a partir de uma linha de comando. Pode ser centenas de arquivos. Espero que isso faça sentido, graças Ivan
Parece que você está esquecendo de passar os arquivos para rename
.
rename 456 555 *456*
Com apenas shell, usando a expansão de parâmetros:
for f in *456*; do echo mv -i -- "$f" "${f//456/555}"; done
aqui estamos revisando os arquivos com 456
em seus nomes, e o padrão de expansão de parâmetro ${f//456/555}
substituirá todos os 456
substrings no nome do arquivo por 555
.
Os itens acima farão o teste de execução mostrando o comando mv
, você pode remover echo
para permitir que a ação ocorra:
for f in *456*; do mv -i -- "$f" "${f//456/555}"; done
com rename
( prename
):
rename -n 's/456/555/g' *456*
isso substituirá todos ( g
) 456
substring de nomes de arquivos por 555
( s/456/555/
).
-n
fará o teste de execução, se você estiver satisfeito com as alterações a serem feitas, remova -n
para permitir a renomeação real:
rename 's/456/555/g' *456*
which -a rename
Indica se alguma ferramenta de renomeação está no seu $ PATH.
rename 's/456/555/g' *
É a sintaxe preferida para fazer o que você quer (conforme indicado no manual ). Se você não tem uma versão antiga ou de renomear sem regex, apenas faça o download (official ) nome_do_promo Que é um script perl
como os sistemas usam.
(movido de um pergunta pretendida como uma resposta aqui)
Encontrei a resposta para minha pergunta:
#! /bin/csh -f
#----------------------------------------------------------------------
# Script Name: moveme Date: 05/07/96
# Written by: John W. Woolsey Rev: 10/11/99
#
# Description:
# Renames a set of files that contain a particular search string
# to file names that contain a replacement string.
#
# Syntax: moveme <search_string> <replace_string>
#
# Where:
# <search_string> is the name of the file name search string.
# <replace_string> is the name of the file name replace string.
#----------------------------------------------------------------------
#
onintr catch
if ($#argv != 2) goto syntax
ls -d *$1* | sed "s/\(.*\)\\(.*\)/mv & $2/" | sh
exit 0
syntax:
echo "Syntax: 'basename $0' <search_string> <replace_string>"
exit 1
catch:
echo "'basename $0' was interrupted or terminated abnormally."
exit 1
Tags rename