Bila anda ingin mencari beberapa pattern dengan find. Contoh saya akan mencari file berakhiran .sql.gz dan .tar.gz yang ada di direktori /backup/ mungkin yang muncul dibenak anda seperti ini

find /backup/ -name "*.sql.gz"  -name "*.tar.gz" -type f

hasil yang saya harapkan

/backup/database/jaranguda-com-05022020.sql.gz
/backup/database/jaranguda-com-06022020.sql.gz
/backup/database/jaranguda-com-04022020.sql.gz
/backup/database/jaranguda-com-03022020.sql.gz
/backup/www/jaranguda-com-05022020.tar.gz
/backup/www/jaranguda-com-06022020.tar.gz
/backup/www/jaranguda-com-04022020.tar.gz
/backup/www/jaranguda-com-03022020.tar.gz

tetapi cara diatas gagal total, bila dilihat di man find

expr1 expr2
      Two expressions in a row are taken to be joined with an implied  "and";  expr2  is  not
      evaluated if expr1 is false.

kalo dilihat dari manual diatas harusnya hasilnya muncul, bila dijalankan satu-satu

$ find /backup/ -name "*.sql.gz" -type f 
/backup/database/jaranguda-com-05022020.sql.gz
/backup/database/jaranguda-com-06022020.sql.gz
/backup/database/jaranguda-com-04022020.sql.gz
/backup/database/jaranguda-com-03022020.sql.gz
 
$ find /backup/ -name "*.tar.gz" -type f 
/backup/www/jaranguda-com-05022020.tar.gz
/backup/www/jaranguda-com-06022020.tar.gz
/backup/www/jaranguda-com-04022020.tar.gz
/backup/www/jaranguda-com-03022020.tar.gz

hasilnya sesuai dengan yang diharapkan. Cek lagi manual, ternyata bisa menggunakan -o atau -or

       expr1 -a expr2
              Same as expr1 expr2.
 
       expr1 -and expr2
              Same as expr1 expr2, but not POSIX compliant.
 
       expr1 -o expr2
              Or; expr2 is not evaluated if expr1 is true.
 
       expr1 -or expr2
              Same as expr1 -o expr2, but not POSIX compliant.
 
       expr1 , expr2
              List;  both expr1 and expr2 are always evaluated.  The value of expr1 is discarded; the
              value of the list is the value of expr2.  The comma operator can be useful for  search‐
              ing  for several different types of thing, but traversing the filesystem hierarchy only
              once.  The -fprintf action can be used to list the various matched items  into  several
              different output files.

ternyata hasilnya kosong.

Syntax yang benar adalah

find /backup/ \( -name "*.sql.gz" -o  -name "*.tar.gz" \) -type f

dengan membuat pattern yang dicari dalam kurung (), maka hasilnya sesuai dengan yang diharapkan.

Leave a comment

Your email address will not be published. Required fields are marked *