Se você tiver uma lista de diretórios separada por nova linha no arquivo list_of_dir
e quiser passar essa lista para find
com segurança, sem divisão de palavras ou expansão de nome de caminho e sem exceder os limites de comprimento de linha, use xargs
(assumindo aqui a implementação do GNU para suas opções -d
e -r
):
xargs -r -d'\n' -I{} find {} -name '*.c' <list_of_dir
Para ser verdadeiramente seguro, deve-se usar uma lista de diretórios separada por NUL, não uma lista separada por nova linha. Se list_of_dir0
contiver uma lista de diretórios separada por NUL, use:
xargs -r -0 -I{} find {} -name '*.c' <list_of_dir0
Como funciona
-
-r
diz ao xargs para não executarfind
, a menos que a lista de diretórios esteja vazia. -
-0
diz ao xargs para esperar uma lista separada por NUL na entrada. Esta é a alternativa mais segura para-d'\n'
, que diz ao xargs para esperar uma lista separada por nova linha. -
-
I{}
diz ao xargs para colocar os diretórios no comando find, onde vê os caracteres{}
(um por vez, uma invocaçãofind
será executada para cada diretório).