Найдите время получения файла в конкретном каталоге

Поскольку требуется арифметика, sed не правильный инструмент. В приведенном ниже решении используется awk .

Ответ на измененный вопрос

Вы говорите, что нежелательные хэши всегда имеют имена, которые включают число, за которым следует буква. В этом случае:

$ awk '/^interface .*[[:digit:]][[:alpha:]]/{$0="interface ethernet" ++f} 1' file1
!
interface ethernet1
xxxx
yyyy
zzzz
!
interface ethernet2
aaa
bbb
ccc
!
interface FastEthernet0/1
ppp
qqq
rrr
!

Как это работает:

  • / ^ interface. * [[: Digit:]] [[: alpha:]] /

    Выбираются только те строки, которые начинаются с interface , которые позже также включают число, за которым следует буква.

  • $ 0 = "interface ethernet" ++ f

    Строки, выбранные, как указано выше, заменяются на interface ethernet , а число и число увеличиваются каждый раз.

  • 1

    Это загадочное сокращение awk для print-the-line.

Чтобы изменить файл на месте, предполагая, что вы используете современную GNU awk, используйте:

awk -i inplace '/^interface .*[[:digit:]][[:alpha:]]/{$0="interface ethernet" ++f} 1' file1

Ответ на исходный вопрос

$ awk '/^interface /{$0="interface ethernet" ++f} 1' file
!
interface ethernet1
xxxx
yyyy
zzzz
!
interface ethernet2
aaa
bbb
ccc
!

Чтобы изменить файл на месте и предполагая современный GNU awk, используйте:

awk -i inplace '/^interface /{$0="interface ethernet" ++f} 1' file
-1
05.09.2015, 07:22
3 ответа

Вы можете использовать stat -c% w filename , он предоставит дату рождения в удобочитаемой форме, а -C предоставит временную метку unix.

Время рождения поддерживается не во всех файловых системах; в этих случаях используйте stat -c% z , то есть время последнего изменения.

4
29.04.2021, 00:24

Для последней части вашего вопроса: используйте find , чтобы найти все файлы старше 5 * 60 минут ( -cmin проверяет наличие время изменения в минутах, +300 означает более 300); {} заменяется именем файла:

find in_dir -cmin +300 -type f -exec mv {} out_dir \;

Обновление: добавлен -тип f , чтобы не перемещать сам in_dir в out_dir.

1
29.04.2021, 00:24

stat без параметров позволяет вам видеть все временные метки (рождение, доступ, изменение, изменение)

1
29.04.2021, 00:24

Теги

Похожие вопросы