per me, questa soluzione non ha funzionato su un comando exec con find, non so davvero perché, quindi la mia soluzione è
find . -type f -path "./a/*" -prune -o -path "./b/*" -prune -o -exec gzip -f -v {} \;
Spiegazione: stesso Sampson-chen uno con le aggiunte di
-prune - ignorare il percorso di procedere di ...
-o - Poi, se non può competere stampare i risultati, (potare le directory e stampare i risultati rimanenti)
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
Bel lavoro. Tuttavia, hai dimenticato una delle cose che l'OP voleva, per trovare i file che terminavano con '_peaks.bed'. – alex
@alex doh, buona chiamata! fixed =) –
Questo utilizza un numero di estensione in GNU 'find', ma poiché la domanda è codificata in Linux, non è un problema. Buona risposta. –