Você pode usar find
e bash
Substituição de comando para isso:
find $(</path/to/path_file) -type f
Isso simplesmente lista todos os f
ile contidos em todos os diretórios mencionados em /path/to/path_file
. Claro que você pode ajustar ainda mais a saída de find
, por exemplo adicionando a opção -ls
.
Exemplo de execução
$ tree
.
├── path_file
├── test1
│ ├── 1
│ └── 2
└── test2
├── 3
└── 4
$ cat path_file
/path/to/test1
/path/to/test2
$ find $(</path/to/path_file) -type f
/path/to/test1/2
/path/to/test1/1
/path/to/test2/4
/path/to/test2/3
Estou usando caminhos absolutos aqui, por isso é irrelevante em qual diretório find
é chamado. Se o path_file
contiver caminhos relativos , você precisará chamá-lo no diretório correto - imagine todos os /path/to
substituídos por .
no exemplo acima.
Se os seus caminhos contiverem espaços, você pode definir o Separador de campos internos para a nova linha com IFS=$'\n'
antes chamando find
, desta forma apenas newline será visto como um limite entre os caminhos.
Se você quiser analisar todas as linhas, recomendamos enfaticamente que parallel
permaneça com find
:
parallel find {} -type f :::: /path/to/path_file
parallel
trata os espaços em branco nos argumentos corretamente por design.