How can I make the “find” Command on OS X default to the current directory?

后端 未结 7 1836
清酒与你
清酒与你 2021-02-13 07:21

I am a heavy command line user and use the find command extensively in my build system scripts. However on Mac OS X when I am not concentrating I often get output l

7条回答
  •  生来不讨喜
    2021-02-13 07:47

    If you can't discipline yourself to use find 'correctly', then why not install GNU find (from findutils) in a directory on your PATH ahead of the system find command.

    I used to have my own private variant of cp that would copy files to the current directory if the last item in the list was not a directory. I kept that in my personal bin directory for many years - but eventually removed it because I no longer used the functionality. (My 'cp.sh' was written in 1987 and edited twice, in 1990 and 1997, as part of changes to version control system notations. I think I removed it around 1998. The primary problem with the script is that cp file1 file2 is ambiguous between copying a file over another and copying two files to the current directory.)

    Consider writing your own wrapper to find:

    #!/bin/sh
    [ ! -d "$1" ] && set -- . "$@"
    exec /usr/bin/find "$@"
    

    The second line says "if argument 1 is not a directory, then adjust the command line arguments to include dot ahead of the rest of the command. That will be confusing if you ever type:

    ~/bin/find /non-existent/directory -name '*.plist' -print
    

    because the non-existent directory isn't a directory and the script will add dot to the command line -- the sort of reason that I stopped using my private cp command.

提交回复
热议问题