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.