Loop Over Files in tcsh Shell - Command Line Tips

  • Thread starter Thread starter ehrenfest
  • Start date Start date
  • Tags Tags
    Loop
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
1 reply · 49K views
ehrenfest
Messages
2,001
Reaction score
1
Is it possible to do a for loop at the command line over all files in a given directory using the tcsh shell? I want to loop over all files and apply some commands (e.g. sed) to each one.

EDIT: I called it a "for" loop because I saw a "for" command when I googled this problem but of course I just want to loop over all the files
 
Physics news on Phys.org
Yes. It's called foreach.

This will invoke the command 'do_something_to' on each .c file in the current directory:
Code:
foreach f (*.c)
   do_something_to $f
end

I often use foreach in conjunction with the backtick operator. This will invoke the command 'do_something_to' on every .c file anywhere in the directory tree headed by the current directory:
Code:
foreach f (`find . -name '*.c'`)
   do_something_to $f
end
The find command can of course do the above directly by using find's -exec option.