Use find command but exclude files in two directories

前端 未结 6 1075
刺人心
刺人心 2021-01-29 22:16

I want to find files that end with _peaks.bed, but exclude files in the tmp and scripts folders.

My command is like this:

6条回答
  •  温柔的废话
    2021-01-29 23:04

    for me, this solution didn't worked on a command exec with find, don't really know why, so my solution is

    find . -type f -path "./a/*" -prune -o -path "./b/*" -prune -o -exec gzip -f -v {} \;
    

    Explanation: same as sampson-chen one with the additions of

    -prune - ignore the proceding path of ...

    -o - Then if no match print the results, (prune the directories and print the remaining results)

    18:12 $ mkdir a b c d e
    18:13 $ touch a/1 b/2 c/3 d/4 e/5 e/a e/b
    18:13 $ find . -type f -path "./a/*" -prune -o -path "./b/*" -prune -o -exec gzip -f -v {} \;
    
    gzip: . is a directory -- ignored
    gzip: ./a is a directory -- ignored
    gzip: ./b is a directory -- ignored
    gzip: ./c is a directory -- ignored
    ./c/3:    0.0% -- replaced with ./c/3.gz
    gzip: ./d is a directory -- ignored
    ./d/4:    0.0% -- replaced with ./d/4.gz
    gzip: ./e is a directory -- ignored
    ./e/5:    0.0% -- replaced with ./e/5.gz
    ./e/a:    0.0% -- replaced with ./e/a.gz
    ./e/b:    0.0% -- replaced with ./e/b.gz
    

提交回复
热议问题