Eu gostaria de renomear um grupo de arquivos para o mesmo nome de arquivo, mas sem extensão. Eles estão espalhados no meu diretório pessoal e não sei onde estão localizados com precisão, mas sei a extensão a ser removida.
Eu preciso ter um e apenas um comando para realizar esta tarefa.
Aqui está o comando parcial:
$ find ~/ -type f -name "*.hhs" -exec mv {} <I DO NOT KNOW> \;
Onde <I DO NOT KNOW>
deve ser substituÃdo por sua sugestão. Por exemplo, tentei substituÃ-lo pelo seguinte:
`basename {} .hhs`
Isto não funciona para mim.
Exemplo
Se os arquivos file1.jpg.hhs
e file2.jpg.hhs
forem encontrados, gostaria que fossem renomeados da seguinte forma: file1.jpg
efile2.jpg
Se você tem ou pode instalar a extensão PERL,
rename
(apt-get install rename
em uma distribuição baseada em Debian)...A opção
-d
ou--delete
exclui a string especificada.Você precisa de uma ferramenta que possa excluir o
.hhs
sufixo do nome do arquivo.find
não pode fazer isso por você, então você terá que chamar outro utilitário através de-exec
:Não estou usando
basename
aqui, pois isso também removeria o caminho do diretório dos nomes de caminho encontrados (que poderiam ser inseridos novamente comdirname
, mas produziria um código confuso).Em vez disso, chamo um script de shell em linha com o maior número possÃvel de nomes de caminhos encontrados e deixo o script fazer um loop sobre eles, copiando os arquivos individuais. O novo nome é construÃdo usando uma substituição de parâmetro padrão que exclui a string
.hhs
do final do valor de$pathname
.Relacionado: