2

sorry if this is asked before but, I was curious about what is the equivalent Linux command of forfiles.exe in Windows? This came to my mind when I saw this question

3
  • 1
    If you included a description of exactly what forfiles.exe does, those of us who know Linux very well will find helping you much easier.
    – MikeyB
    Sep 18, 2009 at 21:01
  • sorry, It's my bad not to explain what forfiles.exe does in windows; but a simple google search gives satisfying results on what forfiles.exe does. Anyway, I'm still ashamed of myself why "find" didn't come to my mind before asking this silly questions ;) Sep 18, 2009 at 21:26
  • @MikeyB, you could have followed the link to the other question. There was a forefiles description there. I updated the question to include a link directly to the technet docs.
    – Zoredache
    Sep 18, 2009 at 21:46

4 Answers 4

3

find is the full-powered replacement, but for simple operations on files in the current directory this sh-script can be pretty useful (and easier to read/write) as well:

for file in *.jpg; do
  echo "do something with $file"
done
1
  • You could have spelled it "for files" ;-) [I know, then it wouldn't make sense.] Sep 18, 2009 at 22:22
2

The find command does what you want. Here's an example:

find /mnt/Pictures -name '*.jpg' \! -mtime 7 -exec rm {} \;

This will delete all the jpg files from /mnt/Pictures, which have not been modified in the last 7 days (168 hours). If you don't care about the case of the filenames use -iname instead of -name.

Here's a correspondence between the parameters of forfiles and the parameters of find:

  • /p → the path is the first argument of find.
  • /s → by default find searches in all subdirectories. To disable this use the -maxdepth option with a value of 1, i.e. -maxdepth 1.
  • /c-exec. Also replace @file with {} and don't forget to end the command with \; (many beginners are bit by this error).
  • /d-mtime n. File's data was last modified n*24 hours ago

! negates the condition. ! is a special character under some shells, including Bash, so it needs to be escaped or quoted, therefore you'll write \! most of the time.

1
  • What does the \! flag after -name do?
    – VELFR
    Feb 25, 2020 at 9:06
0

I think find provides the functionality that forfiles offers.

1
-2

You can create a cron job that uses find with the appropriate arguments, e.g. -mtime +7

1
  • 3
    What does cron have to do with forfiles?
    – Bill Weiss
    Sep 18, 2009 at 20:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.