Use -regex
. O padrão é ancorado no início e no final, portanto, você precisará usar .*
no início e no final, provavelmente. Use [^/]*/
para substituir um glob *
que não corresponde a /
. Por exemplo:
-regex '.*/sr[^/]*sc.*'
Existe um pequeno script Perl find2perl que pretende converter os argumentos para um comando find
em um script Perl equivalente. Obviamente, ele terá o mesmo padrão de correspondência para -path
como find
, mas você pode editá-lo para aceitar outro argumento, digamos -glob
, que usaria a chamada de sistema fnmatch()
para fazer o tipo de globbing quer. Fiz uma modificação rápida na minha versão de find2perl
, conforme mostrado neste patch:
--- /usr/bin/find2perl 2016-02-04 19:28:48.000000000 +0100
+++ /tmp/find2perl 2018-07-31 20:38:10.034175198 +0200
@@ -58,2 +58,4 @@
$out .= tab . '$File::Find::name =~ /' . fileglob_to_re(shift) . "/s$1";
+ } elsif (/^glob$/) {
+ $out .= tab . 'fnmatch("'.(shift).'", $name, FNM_PATHNAME|FNM_PERIOD)';
} elsif ($_ eq 'perm') {
@@ -236,2 +238,3 @@
use File::Find ();
+use File::FnMatch qw(:fnmatch); # import everything
(As linhas que começam com +
mostram as 3 linhas que adicionei). Eu precisava adicionar pacotes perl-App-find2perl
e perl-File-FnMatch
para o Fedora. Você precisaria encontrar o equivalente em seu sistema.
Você pode então executar comandos como
/tmp/find2perl . -glob './sr*sc' | perl