Мне нужно найти все файлы с именами, соответствующими разным регулярным выражениям, в каталогах и подкаталогах и распечатать информацию о них.
Например, у меня есть 3 каталога:
/foo1
/foo1/foo2
/foo1/foo2/foo3
Файлы вэто каталоги fgg1_1
fgg2_1
fgg3_1
:
/foo1/fgg1_1
/foo1/foo2/fgg2_1
/foo1/foo2/foo3/fgg3_1
И мне нужно найти все файлы, соответствующие RE 'f.+1$'
.Кто-то может подумать, что нужно использовать
find /foo -regex 'f.+1$' -printf '%f %A@ %s \n'
, но, безусловно, он не будет ничего соответствовать, потому что -regex оценивает полные имена файлов, например /foo1/foo2/fgg2_1
.
Я попытался получить вывод, но это не сильно помогло, так как мне все еще нужно получить информацию о файлах, которые я нахожу
find /foo -print '%f\n' | grep 'f.+1$'
Важно отметить, что я ищудля несколько универсального решения, поскольку эта команда выполняется на удаленном хосте через ssh и компилируется с использованием скрипта Python, поэтому пути и RE для имен файлов могут каждый раз отличаться
Solution
Вы будетенужно убрать все символы ^
с начала RE файла
find /foo -regex '.*\/f.+1$' -printf '%p %f %h %Y %G %U %A@ %C@ %T@ %s\n'
немного излишним, но в итоге я использовал это из-за того, как stat
отображает c_time
find /foo | grep -e '.*\/f.+1$' | xargs stat --printf '%n %F %g %u %X %Z %Y %s %A\n'