0

I generally know what find ~ –mtime -30 -print does. It finds all the files that have been modified within the last 30 days. However, I can't figure out what -print is doing. Yes, I tried looking at the documentation, and it says it prints the full name followed by a new line. However, removing -print seems to achieve the same results. So what's the difference?

Grateful
  • 113
  • With no args, the default is exactly -print. If you want to print and do something else too, you will need to explicitly -print because there is another command. – Paul_Pedant Jan 29 '23 at 09:46
  • Okay... So, without any arguments, the default is the same as -print. But in this case, because I have -mtime I need the -print? But then I don't understand why in this particular case, the results are the same. Do I need -print here or not? – Grateful Jan 29 '23 at 09:50
  • 1
    From the man page (emphasis added): "The -print action is performed on all files for which the whole expression is true, unless it contains an action other than -prune or -quit. Actions which inhibit the default -print are -delete, -exec, -execdir, -ok, -okdir, -fls, -fprint, -fprintf, -ls, -print and -printf." – rickhg12hs Jan 29 '23 at 09:58
  • @Paul_Pedant : expression not args ;-) : "If no expression is given, the expression -print is used" – MC68020 Jan 29 '23 at 10:00
  • I am afraid, I am not able to fully comprehend that text... Which is why I am still having problems. So, can you please confirm, -print is used by default for everything unless you have another option... So, does that mean adding -mtime then requires us to add -print additionally... Since, it is another action? However, if that is the case, I still don't understand why the command in the question gives the same result regardless of whether -print is added or not? Very very confusing!!! – Grateful Jan 29 '23 at 10:03
  • From the man page, -mtime is not in the set of actions "-delete, -exec, -execdir, -ok, -okdir, -fls, -fprint, -fprintf, -ls, -print and -printf". In fact, -mtime is not an action. – rickhg12hs Jan 29 '23 at 10:11
  • Okay thank you so much. Maybe, I am just too much of a newbie to understand what any of that means... But, please tell me, in simple words.... Do I need -print with -mtime or not? So, I can make sense of why they are giving me the same results. Thank you so much!! – Grateful Jan 29 '23 at 10:35
  • 1
    "-print is used by default for everything unless you have another option" -- no. -print is used by default unless there's another action. -mtime isn't an action, just a condition. It doesn't do anything. So, as you saw, you get the printing by default when all you have is -mtime (or other conditions). It's different if you have find . -mtime -30 -exec true \; -print and remove the -print – ilkkachu Jan 29 '23 at 11:19
  • 2
    @ilkkachu Finally! The penny just dropped. Thank you so much for that answer. It really helped!! – Grateful Jan 29 '23 at 11:32

0 Answers0