Directory FileCount

I have close to 3000 images in a folder and needed to know exactly how many for a stupid bet I made. I dont feel like counting them! there must be something in the linux world to make this easier…. well there is. simple extension of the ls command. my directory is called images but I’m sure contains no images whatsoever. *cough* so lets get the basics : ls -1 images | wc -l what if you wanted to not count sub directories or symlinks? find images -maxdepth 1 -type f | wc -l want to add symlinks? find images -maxdepth 1 -type f -follow | wc -l so yeah the basics should be done ūüôā

bash file listing with markup

every now and again we need to take a bunch of file names from a folder and output then into a single file. sometimes with markup around them. Well there’s always ls. ls > test.txt this nets you the following in a file: 0.png 1.png blockcontent_h.png blockcontent_s.png blockcontent_v.png blockheader.png what if you want markup around the file names? like a list of all images in a folder with html tags around it. well things get slightly more involved. say you have a bunch of png files and want them listed in an html file with img tag and span tags so you can add css classes to it. for i in *.png; do echo “\t\r\t\t<img src=”$i” alt=”” />\r\t”; done > images.html

Archive & Compression utilities

Compression types and utils in Linux There are many compression utilities available to the average users on a linux system, so which one is best? well it all depends on what your intended use/goal for the file(s) is. Are you planning on sending the file to other OS’s? are you planning on decompressing the file on a new system where you might not have the same tools available? etc etc. I am writing about some of the ones I have used, and since this is from my usage some of it may not be entirely true and I may have dreamed up during my hallucinatory state while attending classes. Zip The Most popular tool, archives and provides basic compression. Works on most OS’s popularly used today. zip <filename> <files to compress> ¬† ¬† ¬†—– zip files into one archive zip mydocs.zip doc1 doc2 doc3 doc4 unzip <filename>¬†¬†¬† ¬† ¬†—– unzip files from an archive into their proper paths under current directory. unzip -j <filename>¬†¬† ¬† ¬†—– unzip files from the archive into current directory not following directory structure. Tar Archive only, no compression applied by default. usually found with .tar extension tar -cf ¬†¬†¬† ¬† ¬†—– tar multiple files into one archive with no compression (see bzip2 / gzip for compression) tar -xf <filename>¬† ¬† ¬† —– extract files from a tarball Rar Proprietary¬†but with support for almost all popular platforms, decent compression + archival. usually found with .rar extension rar a <filename>¬†<files to compress>¬† ¬† ¬† —– archive + compress unrar x <filename>¬†¬† ¬† […]

Sed 101

SED aka stream editor is a utility app in linux / bsd systems (among others) which allows you to parse text in files based on simple regexp and change them based on its own set of rules. simple syntax for parsing and replacing text in a file called test.txt that contains the text I love cats and hate dogs n number of times and replace with I love sloths and hate ducks sed -e ‘s/cats/sloths/’ test.txt sed -e ‘s/dogs/ducks/’ test.txt but to make it shorter you can actually add the options to same command. sed -e ‘s/cats/sloths/g’ -e ‘s/dogs/ducks/g’ test.txt the problem with above? it will only do so once per line, so if oyu have multiple instances it wont work. so you need to “globalize” this search/replace. note the added g after the words sed -e ‘s/dogs/ducks/g’ test.txt what if you only want the replacements to happen on lines 2 – 7? sed -e ‘2,7s/dogs/ducks/g’ test.txt How about if you want to only replace on lines begining with the word link? (replace link with any other word you please) and ending in the word pie (again replace pie with whatever) sed -e ‘/^link/,/^pie/s/dogs/ducks/g’ test.txt what if your words have the separator / already in them? say in a path like /home/kingpin ? well you can replace the separator with anything arbitrary you choose at the beginning after the s and it will change the separator all throughout the sed command. sed -e ‘s;dogs;ducks;g’ test.txt or with / in the words sed -e ‘s;/home/kingpin;/home/notkingpin;g’ test.txt […]