Why does find . -not -name “.*” not exclude hidden files?

后端 未结 2 1452
庸人自扰
庸人自扰 2020-12-19 08:01

I want to ignore all hidden files, but especially .git and .svn ones when searching (and later replacing) files, not I have found that the most basic way to exclude such hid

相关标签:
2条回答
  • 2020-12-19 08:42

    correct version

    replace() {
            if [ -n "$3" ]; then expr=-name\ $3; fi
            find $PWD -name '.*' -prune -o $expr -type f -exec sed -i s/$1/$2/g {} \;
            unset expr
    }
    
    0 讨论(0)
  • 2020-12-19 09:06

    The thing is -not -name ".*" does match all files and directories that start with anything but "." - but it doesn't prune them from the search, so you'll get matches from inside hidden directories. To prune paths use -prune, i.e.:

    find $PWD -name ".*" -prune -o -print
    

    (I use $PWD because otherwise the start of the search "." would also be pruned and there would be no output)

    0 讨论(0)
提交回复
热议问题