가질 수 있는 방법이 있나요?ack
검색된 결과를 수정 날짜별로 정렬하시겠습니까? (이상적으로는 결과 옆에 날짜를 표시합니까?) ack
날짜 옵션이 있는 것 같지는 않지만 만일의 경우를 대비해서입니다.
로 이것이 가능하지 않다면 도구의 조합을 사용하는 것은 ack
어떻습니까 ?grep
답변1
파일 수정 날짜에 대한 개념이 없거나 ack
없습니다 . grep
이를 위해서는 먼저 파일 목록을 생성한 다음 나중에 이를 기준으로 정렬해야 합니다.
수정 날짜를 제공하는 다른 명령 중 xargs
하나의 출력을 실행하는 데 사용할 수 있습니다 . 수정 날짜의 경우 이를 수행하는 데 사용할 수 있습니다.ack
grep
stat
예
$ grep -Rl awk * | xargs -n 1 stat --printf "%y ------ %n\n"
2013-11-12 10:06:16.000000000 -0500 ------ 100855/tst_ccmds.bash
2013-11-13 00:32:11.000000000 -0500 ------ 100911/cmd.bash
2013-11-23 03:16:17.000000000 -0500 ------ 102298/cmd.bash
2013-12-14 20:06:04.467708173 -0500 ------ 105159/cmd.txt
2013-12-16 03:20:48.166016538 -0500 ------ 105328/cmds.txt
2013-01-14 14:17:39.000000000 -0500 ------ 106932/red5-1.0.1.tar.gz
메모:이 방법은 수정 날짜와 함께 쿼리와 일치하는 파일 이름만 표시합니다.
답변2
GNU 도구 사용:
grep -H something * | awk -F: '{"date -r \""$1"\" +\"%F %R\"" | getline d; print d,$0}' | sort -n
또는,
ack something | awk -F: '{"date -r \""$1"\" +\"%F %R\"" | getline d; print d,$0}' | sort -n
이는 일반적인 출력 awk
에서 파일 이름을 분리 하고 파일 날짜를 검색하기 위해 호출하는 데 사용됩니다. 명령줄에 파일 이름이 하나만 나타나더라도 출력에 파일 이름이 표시되도록 하는 옵션이 제공됩니다 .grep
awk
date
grep
-H
출력의 예를 들면 다음과 같습니다.
$ grep setupcon /etc/init.d/* | awk -F: '{"date -r \""$1"\" +\"%F %R\"" | getline d; print d,$0}' | sort -n
2011-12-05 12:05 /etc/init.d/keymap.sh:# If setupcon is present, then we've been superseded by console-setup.
2011-12-05 12:05 /etc/init.d/keymap.sh:if type setupcon >/dev/null 2>&1; then
2011-12-08 18:00 /etc/init.d/console-setup: if setupcon --save; then
2011-12-08 18:00 /etc/init.d/console-setup:test -f /bin/setupcon || exit 0
2012-04-28 02:41 /etc/init.d/kbd:if which setupcon >/dev/null
2012-09-30 18:02 /etc/init.d/keyboard-setup: if setupcon -k 2>/dev/null; then
2012-09-30 18:02 /etc/init.d/keyboard-setup:test -f /bin/setupcon || exit 0
awk
명령어 설명
-F:
:
첫 번째 필드가 파일 이름이 되도록 필드 구분 기호를 로 설정합니다 . (파일 이름 자체에 콜론이 포함되지 않기를 바랍니다.)"date -r \""$1"\" +\"%F %R\"" | getline d
date -r filename +"%F %R"
정렬에 적합한 형식으로 파일의 수정 날짜를 가져오기 위해 실행됩니다 . 날짜는 변수에 저장됩니다d
.print d,$0
그러면 데이터와 의 출력 행이 인쇄됩니다
grep
.