[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