próbuję zastąpić ciąg :::
z ::
dla wszystkich linii w partii txtfiles (może to być traktowane jako słowa, ponieważ nie zawsze jest przestrzeń przed i za nimzastąpić ciąg w wszystkich plików - Unix
mogę zrobić z python jak poniżej, ale jest tam mniej „over-kill”/zawiły sposób to zrobić za pośrednictwem terminalu unix? (Wiele rur dozwolone)
indir = "./td/"
outdir = './od/'
for infile in glob.glob(os.path.join(indir,"*")):
_,FILENAME = os.path.split()
for l in codecs.open(infile,'r','utf8').readlines():
l = l.replace(":::","::").strip()
outfile = codecs.open(os.path.join(outdir,FILENAME),'a+','utf8')
print>>outfile, l
potem przenieść wszystko pliki od od do td mv ./od/* ./td/*
prostsze i bardziej wydajne, jak również. Możesz sprawić, że wersja 'find' będzie równie wydajna, jeśli użyjesz' + 'zamiast' \; 'na końcu. – Idelic
-1 dla używania ls do obsługi nazw plików. Dodałbym jeszcze jeden za brak oczywistego "prostszego" rozwiązania 'sed -i ... td/*. C' (z dodaną gwiazdą globalną w razie potrzeby). I jeszcze jeden do używania nazw katalogów w opcji find -name (zobacz: http://linux.about.com/od/commands/l/blcmdl1_find.htm) ... Jak to się stało, że dostał 4 głosy? – Sorin
@Sorin: Przyznaję, że nie uwzględniam znaków specjalnych w nazwach plików źródłowych (myślę, że ci, którzy ich używają, zasługują na to, co dostają), ale poza tym nie widzę problemu. Kudos za twoją sugestię 'td/*. C' jednak nie wiedziałem, że to zadziała; Dodałbym to do mojej odpowiedzi (z atrybucją), gdyby zostało to zasugerowane z większą uprzejmością. – Beta