Usando “find” não recursivamente?

3

Usando /bin/find /root -name '*.csv' retornos:

/root/small_devices.csv
/root/locating/located_201606291341.csv
/root/locating/located_201606301411.csv
/root/locating/g_cache.csv
/root/locating/located_201606291747.csv
/root/locating/located_201607031511.csv
/root/locating/located_201606291746.csv
/root/locating/located_201607031510.csv
/root/locating/located_201606301412.csv
/root/locating/located_201606301415.csv
/root/locating/located_201607031512.csv

Na verdade, não quero todos os arquivos em /root/locating/ , então a saída esperada é simplesmente /root/small_devices.csv .

Existe uma maneira eficiente de usar 'encontrar' não-recursivamente?

Estou usando o CentOS se isso for importante.

    
por DeepSpace 27.07.2016 / 12:26

2 respostas

6

Você pode fazer isso com a opção -maxdepth

/bin/find /root -maxdepth 1 -name '*.csv'

De man find

-maxdepth levels

Descend at most levels (a non-negative integer) levels of directories below the starting-points.

-maxdepth 0

means only apply the tests and actions to the starting-points themselves.

    
por 27.07.2016 / 12:30
5

Com o não-GNU find :

find /root ! -path /root -prune -type f -name "*.csv"

Isso removerá (removerá) todos os diretórios em /root da pesquisa, exceto o diretório /root , e continuará imprimindo os nomes dos arquivos de qualquer arquivo que corresponda a *.csv .

Com o GNU find :

find -maxdepth 1 /root -name "*.csv"
    
por 27.07.2016 / 12:40

Tags