perl -e 'for(<*>){((stat)[9]<(unlink))}'
dir, err := os.Open("/var/spool/directory")
if err != nil {
fmt.Fprintf(w, "failed - " + err.Error())
return
}
defer dir.Close()
files, err := dir.Readdir(-1)
if err != nil {
fmt.Fprintf(w, "failed - " + err.Error())
return
}
for _, file := range files {
if file.Name() == "." || file.Name() == ".." {
continue
}
os.Remove("/var/spool/directory/" + file.Name())
}
fmt.Fprintf(w, "success")
As far as I understand, that perl line is by far the fastest way to delete files in linux. We're talking over 500k files on hdd.
On Monday, December 4, 2017 at 12:50:54 PM UTC-5, Gabriel Forster wrote:What takes 18 seconds in a perl command:
perl -e 'for(<*>){((stat)[9]<(unlink))}'
is taking almost 8 minutes with the following code. Any ideas how I can speed this up?
dir, err := os.Open("/var/spool/directory")
if err != nil {
fmt.Fprintf(w, "failed - " + err.Error())
return
}
defer dir.Close()
files, err := dir.Readdir(-1)
if err != nil {
fmt.Fprintf(w, "failed - " + err.Error())
return
}
for _, file := range files {
if file.Name() == "." || file.Name() == ".." {
continue
}
os.Remove("/var/spool/directory/" + file.Name())
}
fmt.Fprintf(w, "success")
--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
package main
import (
"fmt"
"path/filepath"
"syscall"
)
func main() {
upperDirPattern := "/var/spool/directory/*"
matches, err := filepath.Glob(upperDirPattern)
if err != nil {
fmt.Println(err)
}
for _, file := range matches {
syscall.Unlink(file)
}
}
--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
But why? Why does it matter if you are in the same dir or not when you glob?