Fjerning av spesial tegn.

Fjerning av spesial tegn.

Innleggav p0ker » lør 12.01.2008 20:13

Hei,

Jeg har en del filer som inneholder noen spesiall tegn, og når jeg bruker de i andre sammenhenger så funker dette dårlig. Det jeg vil nå er å fjerne disse spesiall tegnene.


Si jeg jeg har en f.eks en katalog som inneholder "file #1.txt" og "file #2.txt". Spesiall tegnet i dette eksemplet er #, så det jeg vil nå er å kjøre et bash script som fjernet "#", slik at "file #1.txt" blir "file 1.txt" og "file #2.txt" blir "file 2.txt"...

Har flere spesialle tegn, men et lite bash script som søkter etter et tegn og fjerner det fra filnavnet er mer enn nok.... anyone?

Brukerens avatar
medlem i 208 måneder
 

Re: Fjerning av spesial tegn.

Innleggav TO » lør 12.01.2008 21:50

EDIT: så for sent at du ønsket å endre selve filnavnet, se rename(1).

Eksempel hvor #,^, *, og & fjernes i teksten i fila. Endringen gjøres i fila men det blir en sikkerhetskopi: filnavn.bak.
sed --in-place=.bak -e 's#[#^*&]##g' filnavn

Du kan enten sette dette i ei skriptfil, eller definere det som et alias i .bashrc:
alias fiksfil="sed ....." # bruk: fiksfil filnavn
medlem i 213 måneder
 

Re: Fjerning av spesial tegn.

Innleggav jp_tix » man 21.01.2008 2:31

Du kan gjøre det med denne:

Kode: Merk alt
for i in *.txt; do mv "$i" ${i//[\ *\?_\-\[\]~=&\!#$%^(){\}<>\\]/}; done


Prøv en «dry run» først for å se hvordan filnavnene vil bli seende ut:

Kode: Merk alt
for i in *.txt; do echo ${i//[\ *\?_\-\[\]~=&\!#$%^(){\}<>\\]/}; done

Brukerens avatar
medlem i 229 måneder
 


Returner til Scripting



Hvem er i Forumene

Registrerte brukere: Google [Bot]



cron