Oto mój skrypt bash:
for next in `ls | grep -P -o "[a-zA-Z0-9]*" | grep -v "^c$" | grep -v "^obj$" | grep -v "^sh$"`
do
mv "$next.c.obj" $next
done
Jak widać, jest brzydka. Zasadniczo usuwa rozszerzenie .c.obj z plików (które, nawiasem mówiąc, dostały się tam, ponieważ zepsułem poprzedni skrypt). Działa, ale nie wygląda na najbardziej wydajne rozwiązanie.
Czyn został już zrobiony, więc proszę nie publikować innych sposobów (zmiana nazwy, sed lub awk).
Chcę tylko wiedzieć, czy można to zrobić tylko za pomocą grep i bash, ale bardziej elegancko.
command-line
bash
grep
Niraw
źródło
źródło
filename="foobar.c.obj"; echo "${filename%*.c.obj}"
for file in *.c.obj ; do [[ -f ${file%.c.obj} ]] || mv "$file" "${file%.c.obj}" ; done