Você não especificou que tinha que ser uma solução bash, então aqui está uma solução python. Leva em conta que você precisa de uma extensão de 3 caracteres. No entanto, não faz muito no sentido de verificar você não vai quebrar nada. Ele verifica os diretórios e você só renomeia os arquivos reais. Essa solução exigirá que uma opção -E seja passada.
editar:
Se o nome do arquivo começar com a. (arquivo oculto) ignore. Com relação aos links simbólicos, isso pode levar um pouco mais de consideração.
#!/usr/bin/env python
import sys
import argparse
import re
import os
def main():
path = '/var/dump/files'
parser = argparse.ArgumentParser()
parser.add_argument('-E', help='three character extension(.i.e log)',\
type=str)
args = parser.parse_args()
if args.E:
if not re.search(r'^[a-zA-Z]{3}$', args.E):
print 'Invalid Input. A three character extenstion required: %s' % str(args.E)
sys.exit(19)
ext = '.'+str(args.E)
else:
print 'Invalid Input. A three character extenstion required'
sys.exit(19)
files = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path,f))]
for f in files:
# ignore hidden files
if f[0] == '.': continue
name = f.split('.')[0]
os.rename(os.path.join(path,f),os.path.join(path,name+ext))
if __name__ == "__main__":
main()
Esta solução do -E será opção, e usará '.log' como padrão. Você poderia especificar Required = True no add_argument () para tê-lo como uma opção obrigatória.
#!/usr/bin/env python
import sys
import argparse
import re
import os
def main():
path = '/var/dump/files'
parser = argparse.ArgumentParser()
parser.add_argument('-E', help='three character extension(.i.e log)',\
type=str)
args = parser.parse_args()
if args.E:
if not re.search(r'^[a-zA-Z]{3}$', args.E):
print 'Invalid Input. A three character extenstion required: %s' % str(args.E)
sys.exit(19)
ext = '.'+str(args.E)
else:
ext = '.log'
files = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path,f))]
for f in files:
# ignore hidden files
if f[0] == '.': continue
name = f.split('.')[0]
os.rename(os.path.join(path,f),os.path.join(path,name+ext))
if __name__ == "__main__":
main()