Usando o perl
script prename
, que é vinculado a rename
nas distribuições baseadas no Debian.
rename -n 's/^([^_]*)_.*/$1.txt/' *_*.txt
Remova o -n
quando tiver certeza de que faz o que deseja.
Eu tenho um monte de arquivos em um diretório que são nomeados da seguinte forma: ID_OTHER_STUFF.txt Eu gostaria de renomeá-los todos para ID.txt. Isso não é uma duplicata porque não sei como especificar esse padrão.
Você quer usar a expansão de parâmetros do seu shell para manipular o nome, assim:
for file in *.txt
do
mv $file ${file/_*/}.txt
done
Por exemplo:
$ ls -1
1_foo_bar.txt
2_foo_bar.txt
$ for file in *.txt
for> do
for> mv $file ${file/_*/}.txt
for> done
$ ls -1
1.txt
2.txt
Pesquise Expansão de Parâmetros na página do manual do seu shell para obter mais detalhes sobre ${name/pattern/repl}
usage.
Suponha que seus arquivos sejam:
1_other_stuff.txt 2_other_stuff.txt 3_other_stuff.txt
Você poderia fazer:
$ seq 1 3 | xargs -I ID mv ID_other_stuff.txt ID.txt
Você deseja mv
deles em um loop, script mini bash, existem várias variações. nesta pergunta Renomear arquivos em lote .