[ILUG] Strip first three characters from filename

Brian Foster blf at utvinternet.ie
Sun Aug 10 20:47:08 IST 2008


  | Date: Sun, 10 Aug 2008 20:17:40 +0100
  | From: "Colm Buckley" <colm at tuatha.org>
  | On Sun, Aug 10, 2008 at 11:25 AM, john Moylan <john at nuatech.net> wrote:
  | 
  | > for i in `ls *.mp3`; do cut  -d "_" -f2-; done
  | 
  | Just a note on the above; the "ls" is completely superfluous.  The shell is
  | already expanding "*.mp3" to the list of all mp3 files in the current
  | directory; ls would only be necessary if you wanted to extract file
  | information other than the name.
  | 
  | for i in *.mp3; do .... done has the same effect as the above, but it avoids
  | launching a subprocess and the ls program.
  | 
  | You often see people writing stuff like 'ls *.bar' when 'echo *.bar' would
  | have exactly the same effect but would be considerably faster.

 not quite.
 whilst I also detest the practice of using  ls *.bar
 I also also realize it's not the same as  *.bar

  1. if a matching  foo.bar  is directory, the  ls *.bar
     lists the contents of the directory, whilst  *.bar
     just lists the directory name, foo.bar

  2. order may differ?

  3(most significant?)  if nothing matches, *.bar _is_ *.bar
     whilst  ls *.bar  results in an error from ls, and in
     the case shown, the for-loop does not execute.

 echo *.bar  printing  *.bar  when nothing matches is the
 the default behaviour.  it can be, but rarely is, changed,
 and changing very probably will break some scripts.

cheers!
	-blf-

-- 
“How many surrealists does it take to    |  Brian Foster
 change a lightbulb?  Three.  One calms  |  somewhere in south of France
 the warthog, and two fill the bathtub   |     Stop E$$o (ExxonMobil)!
 with brightly-coloured machine tools.”  |       http://www.stopesso.com



More information about the ILUG mailing list