Você sempre pode usar o comando locate
, que lê um banco de dados de todos os arquivos. No entanto, o banco de dados deve ser atualizado antes de executar locate
.
Veja um exemplo do que se pode fazer
$ locate --regex ".*/lightdm.conf$"
/etc/init/lightdm.conf
/etc/lightdm/lightdm.conf
Agora, para processar em lote uma lista de arquivos, pode-se usar while read do. . . done < input_file
structure, com locate
code dentro. Algo parecido com isto:
$> cat > file_list.txt
passwd
lightdm.conf
firefox.desktop
$> while read line ; do
> locate --regex ".*/$line$"
> done < file_list.txt
/etc/passwd
/etc/cron.daily/passwd
/etc/pam.d/passwd
/home/xieerqi/Desktop/cleanup/passwd
/home/xieerqi/Documents/passwd
/usr/bin/passwd
/usr/share/bash-completion/completions/passwd
/usr/share/doc/passwd
/usr/share/lintian/overrides/passwd
/etc/init/lightdm.conf
/etc/lightdm/lightdm.conf
/usr/share/applications/firefox.desktop
É claro que essa não é a mais rápida das pesquisas - afinal, o banco de dados contém milhares de arquivos, mas muito mais rápido do que percorrer todo o arquivo.
estrutura de diretórios com find