Trabalhei usando o script a seguir, adaptado ao fornecido por Costas, que não funcionou no começo:
for d in ACB*; do
cd ${d}
for f in scanID*; do
mv "${f}" "${d}${f#scanID}"
done
cd ..
done
Eu tenho pastas com o nome ACB*
e entre vários outros arquivos, alguns arquivos chamados scanAC_*
Eu quero excluir a parte chamada scanAC
e substituí-la pelo nome do diretório em que ela está.
Por exemplo, o diretório ACB_200315
contém o arquivo scanAC_typefile_2S.dcm
, eu quero que o lastfile se torne ACB_200315_typefile_2S.dcm
O que eu tentei agora (Linux, SSH, renomear opção não disponível) mas não funciona:
for i in ACB*; do
cd ${i}
mv scanID* ${i/scanID/${PWD##*/}};
cd ..
done
Trabalhei usando o script a seguir, adaptado ao fornecido por Costas, que não funcionou no começo:
for d in ACB*; do
cd ${d}
for f in scanID*; do
mv "${f}" "${d}${f#scanID}"
done
cd ..
done
Para o script "par de arquivos", é necessário modificar um pouco
for d in ACB* ; do
for f in ${d}/scanID* ; do
mv "${f}" "${f/scanID/${d}}"
#mv "${f}" "${d}/${d}${f#*scanID}"
done
done
Ou use encontrar em vez
find ACB* -name 'scanID*' -exec bash -c 'mv "$0" ""${0/scanID/${0%\/*}}"' {} \;