Re: Weird behavior with find command when tarring files

  • From: Jared Still <jkstill@xxxxxxxxx>
  • To: post.ethan@xxxxxxxxx
  • Date: Wed, 5 Dec 2018 19:38:10 -0800

yes, the empty input can be dangerous, use -E to deal with that

 find tmp -name notexist | xargs ls
12c-connect.txt              blog             git-ignore-template
nohup.out           snow.sh
DBI                          so      github-config-template  nwt
      snow2.sh
Desktop                      build            ht-detect.sh            ogg
              sounds
Documents                    c                html                    old
              sqlnet.log
Downloads                    cdrom            imagejpeg_0.jpg
ora112304a.jks.com  sqltext.txt
FlameGraph                   checking         iostat
 oracle              ssh-find-agent
...
jkstill@poirot ~ $



jkstill@poirot ~ $
 find tmp -name notexist | xargs -E ls -l

jkstill@poirot ~ $
 find tmp -name j | xargs -E ls -l
tmp/run_stats_load/j
tmp/performance/th/j
tmp/sqlstats/perl/j
tmp/sqlstats/ddl/j
tmp/j
tmp/cursor/j
jkstill@poirot ~ $


now imagine the ls command was instead rm...


On Fri, Oct 26, 2018 at 06:42 <post.ethan@xxxxxxxxx> wrote:

Thanks for the tip, I didn’t know about -print0. Is this option generally
available on older Unix (hpux, aix, solaris)? I have been using double
quotes in most of my code for a couple years around file variables in
anticipation of being able to run on Windows environments. Have not dare
tested that yet however.



One other thing to note here. Be really careful with xargs. I believe it
executes on null input too. I don’t recall the exact issue but I have been
burned at least twice and good enough to recall you need to be very careful
with it if you are deleting or modifying things. Also stay away from “find
.” and make sure you try to use a full path there. This is all obvious
maybe and only used here for the sake of examples but throwing it out there
for the newbies if any are reading.



Ethan Post

https://www.linkedin.com/in/ethanraypost/

https://arclogicsoftware.com

https://twitter.com/poststop





*From:* oracle-l-bounce@xxxxxxxxxxxxx <oracle-l-bounce@xxxxxxxxxxxxx> *On
Behalf Of *Jared Still
*Sent:* Friday, October 26, 2018 1:49 AM
*To:* Hameed, Amir <Amir.Hameed@xxxxxxxxx>
*Cc:* oracle-l@xxxxxxxxxxxxx
*Subject:* Re: Weird behavior with find command when tarring files



In addition to the other fine comments, you should get in the habit of
dealing with filenames that have spaces.



It seems impossible to anymore to avoid this, as you don't always have
control over it.



Here's how:  use the '-print0' option for find, and the '-0' option for
xargs.



find . type f -mmin +239 -print0 | xargs -0 tar -cvf /tmp/test.tar






Jared Still
Certifiable Oracle DBA and Part Time Perl Evangelist

Principal Consultant at Pythian

Pythian Blog http://www.pythian.com/blog/author/still/

Github: https://github.com/jkstill





--
Jared Still
Certifiable Oracle DBA and Part Time Perl Evangelist
Principal Consultant at Pythian
Pythian Blog http://www.pythian.com/blog/author/still/
Github: https://github.com/jkstill

Other related posts: