5 ms·
I still prefer a simple shell script for these use cases. Here's a snippet for the translated file size calculation: translated_files=$(grep "todavida no ha
by moonboots 15y ago
I still prefer a simple shell script for these use cases. Here's a snippet for the translated file size calculation:
translated_files=$(grep "todavida no ha sido traducida" *)
total_size=$(du --summarize . | cut -f 1)
translated_file_size=$(du --summarize --total $(echo translated_files) | tail -n 1 | cut -f 1)
echo "translated size: ${translated_file_size}KB/${total_size}KB $(($translated_file_size/$total_size))%"
- archangel_one 15y agoI find that much more elegant; four lines of bash script which would run on nearly any Unix-like system, versus 49 (or a bit less if you drop the whitespace) of Scala, which won't. Even the shebang is three lines instead of one! I guess this example is nice as an introduction to Scala, but it doesn't seem like Scala is a particularly appropriate replacement for any of the things one would normally use a shell script for.
- viraptor 15y ago> which would run on nearly any Unix-like system Did you mean on nearly any Unix-like system which has the output of du in the same format as the one on your machine? I don't believe those can be treated as standard if you want any kind of portability.
- archangel_one 15y agoOkay, I'm not an expert on variations between different Unices, that may well be the case. The point I was trying to make was more that it would run without having to install a great wodge of Java/Scala dependencies which aren't on most systems by default.
- opensas 15y agoWhy wouldn't it run on any unix, linux, or windows, or wherever a JVM can run? you should run it with "scala status.scala" apart from that, I came to a similar conclusion: http://playlatam.wordpress.com/2012/01/13/first-steps-with-scala-revisited-bash-and-python-strikes-back/#conclusion http://playlatam.wordpress.com/2012/01/13/first-steps-with-s...
- icebraining 15y agoTwo nitpicks: grep by default returns lines that match, not files, you need the '-l' option; and you're passing the string "translated_files" to du instead of the actual files, you need just $translated_files instead of the echo. And that breaks with files with spaces on them, which is a bane of shell scripts. By the way, in Python: import os total_size = sum([os.path.getsize(filename) for filename in os.listdir('.')]) matches = [match for match in os.listdir('.') if "todavida no ha sido traducida" in open(match).read()] translated_file_size = sum([os.path.getsize(filename) for filename in matches]) print "translated size: %dKB/%dKB %d" % (translated_file_size, total_size, translated_file_size / total_size)
- moonboots 15y agoGood catches The spaces in filenames can be handled by having grep and du communicate with null delimited strings instead of newline delimited, e.g. grep --files-with-matches --null "todavida..." * du --summarize --total --files-from=<($(echo $translated_file_size))
- opensas 15y agothanks for the tip, here's my bash version http://playlatam.wordpress.com/2012/01/13/first-steps-with-scala-revisited-bash-and-python-strikes-back/#bash http://playlatam.wordpress.com/2012/01/13/first-steps-with-s...
- opensas 15y agoyeap, python is pretty cool, see http://playlatam.wordpress.com/2012/01/13/first-steps-with-scala-revisited-bash-and-python-strikes-back/#python http://playlatam.wordpress.com/2012/01/13/first-steps-with-s...