1

Я ищу способ рекурсивного сканирования каталога и распечатать все экземпляры любого файла, который заканчивается ".qfx". Таким образом, для данного каталога:

somedir/
    fizz.qfx
    buzz.qfx
    blah/
        foo.qfx
        widget.js
        meh/
            bar.qfx
            derp.gif

Выход будет:

somedir/fizz.qfx
somedir/buzz.qfx
somedir/blah/foo.qfx
somedir/blah/meh/bar.qfx

Я нахожусь на Ubuntu, поэтому нет предпочтений в shell, python, perl и т.д. Лучшая попытка на данный момент:

find -name ".qfx" somedir

Но получаю следующую ошибку:

find: paths must precede expression: .
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec][path...] [expression]

Есть идеи? Заранее спасибо!

3 ответа3

2

он говорит вам поставить каталог перед выражением -name . Кроме того, вам нужно * чтобы соответствовать для всех файлов:

find somedir -name "*.qfx" 
1

Если вы используете zsh качестве оболочки, вы также можете использовать ls **/*.qfx , что довольно полезно.

1
find /u02/fullbackup -name *.bck -print
find: paths must precede expression: arc_381465332_OSOS_20160219_2879_1.bck
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

решение:

find /u02/fullbackup -name '*.bck' -print

/u02/fullbackup/dbf_381465332_OSOS_20160219_2872_1.bck
/u02/fullbackup/arc_381465332_OSOS_20160219_2882_1.bck
/u02/fullbackup/arc_381465332_OSOS_20160219_2892_1.bck
/u02/fullbackup/arc_381465332_OSOS_20160219_2894_1.bck
/u02/fullbackup/arc_381465332_OSOS_20160219_2891_1.bck
/u02/fullbackup/arc_381465332_OSOS_20160219_2885_1.bck
/u02/fullbackup/dbf_381465332_OSOS_20160219_2871_1.bck
/u02/fullbackup/arc_381465332_OSOS_20160219_2888_1.bck

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .