2013-11-08 2 views
2

У меня есть этот код, который показывает файлы, которые были изменены за последние 10 часов.Поиск в домашней директории с awk

Это прекрасно работает; однако, я хочу, чтобы это делалось только в каталоге home. Я попробовал поставить $HOME, как я нашел с другими примерами AWK, взятыми из определенного каталога; однако это не сработало. Я понимаю, что это не лучший способ сделать это, но для меня это упражнение, и должно использоваться grep; в противном случае я бы определенно использовал find.

Это, вероятно, довольно просто, но я новичок в bash, поэтому это довольно запутанно для меня. Любая помощь будет оценена по достоинству. Благодаря!

echo "The files modified less than 10 hours ago are:" 
ls -algG --time-style=+%s | grep ^[^d] | awk -vlimit=$(date +%s -d '10 hours ago') '$4 > limit { print substr($0, index($0, $4) + length($4) + 1) }' 
+0

Вы попробовали 'ls -algG --time-style = +% s $ {HOME} | grep^[^ d] | awk -vlimit = $ (date +% s -d '10 hours ago ')' $ 4> limit {print substr ($ 0, index ($ 0, $ 4) + length ($ 4) + 1)} ''? – devnull

+0

О, ты потрясающий, спасибо @devnull! :) – user2963286

+0

Вам никогда не понадобится grep с awk, так как awk может делать сравнения RE на своем собственном. –

ответ

2

Я действительно хотел бы предложить, чтобы заменить вашу длинную команду с чем-то простым, как

find ~ -not -type d -newermt '10 hours ago' 

Проверьте документацию find(1).

Смежные вопросы