Eu tenho um conjunto de arquivos nos quais gostaria de aplicar o mesmo comando e a saída deve conter o mesmo nome que o arquivo processado, mas com uma extensão diferente.
No momento, estou renomeando /my/data/Andrew.doc para /my/data/Andrew.txt. Gostaria de fazer isso para todos os arquivos .doc da pasta / my / data / e para preservar o nome.
Eu tentei várias versões, mas acho que tenho algo errado na sintaxe, pois sou novo no linux.
command-line
bash
Robert
fonte
fonte
Respostas:
Existem pelo menos cem milhões de maneiras diferentes de abordar isso, mas aqui estão os principais candidatos:
O Bash para loop
Usando
find
O
find
comando possui um pequeno e adorávelexec
comando que é ótimo para executar coisas (com algumas ressalvas). Encontrar é melhor do que o globbing básico, porque você pode realmente filtrar os arquivos que está selecionando. Cuidado com a sintaxe ímpar.Observe que
find
é recursivo, portanto, você pode querer usar-maxdepth 1
para mantê-lofind
no diretório de trabalho atual.-type f
pode ser usado para filtrar arquivos regulares.Se estamos apenas renomeando doc para txt ...
O
rename
comando é semelhante a sed na pesquisa. Obviamente, isso não fará nada para converter o formato.fonte
fonte